【问题标题】:ZF2 - Missing argument 1 for XXXController::__construct()ZF2 - XXXController::__construct() 缺少参数 1
【发布时间】:2015-08-31 18:42:19
【问题描述】:

我正在尝试使用工厂来创建控制器实例:

class AuthenticationController extends AbstractActionController
    implements ControllerProviderInterface 
{
    private $loginLogoutService;

    public function __construct($lls)
    {
        $this->loginLogoutService = $lls;
    }

    public function getControllerConfig() {
        return array(
            'factories' => array(
                'Main\Controller\Authentication' => function(ControllerManager $cm) {
                    $sm   = $cm->getServiceLocator();
                    $depA = $sm->get('LoginLogoutService');
                    $controller = new AuthenticationController($depA);
                    return $controller;
                },
            ),
        );
    }

但我收到一条错误消息:

警告:缺少参数 1 Main\Controller\AuthenticationController::__construct()

为什么不使用工厂来创建控制器?

【问题讨论】:

    标签: php controller zend-framework2 factory


    【解决方案1】:

    getControllerConfig() 应该在您的Module.php 中,而不是在控制器本身中。其他一切看起来都不错。

    【讨论】:

    • 那行得通,但是当文档说可以使用 ControllerProviderInterface 时,为什么它必须在 Module.php 中?我只是不明白...
    • ControllerProviderInterface只能由Module.php实现。控制器拥有定义如何创建自身实例的实例方法是没有意义的,因为控制器管理器必须首先创建它的实例才能调用该方法。
    猜你喜欢
    • 2014-06-03
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    • 2017-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多