2015-08-31 42 views
0

我想使用一個工廠來創建一個控制器實例:ZF2 - 缺少參數1 XXXController :: __結構()

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()

爲什麼不用工廠來創建控制器?

回答

1

getControllerConfig()應該在你的Module.php,而不是在控制器本身。其他一切看起來都不錯。

+0

工作正常,但爲什麼它必須在Module.php中,當文檔說ControllerProviderInterface可以使用?我只是不明白... – JVerstry

+0

'ControllerProviderInterface'只能由'Module.php'實現。控制器有一個實例方法定義瞭如何創建自己的實例是沒有意義的,因爲控制器管理器必須首先創建一個實例來調用該方法。 –