【发布时间】:2014-05-15 02:56:16
【问题描述】:
我的控制器结构中必须有 ServiceLocator,但我不能。
在我的方法中,我可以用来获取数据库参数:
$this->getServiceLocator()
但是,这种方法在我的__construct 中不起作用。
所以,我尝试在我的 Module.php 中添加它,但它看起来不起作用:
public function getControllerConfig() {
return array(
'factories' => array(
'validechoixoptions' => function(ControllerManager $cm) {
$sm = $cm->getServiceLocator();
$controller = new \Validechoixoptions\Controller\Index($sm);
return $controller;
},
),
);
}
怎么了?我不明白如何使用这个工厂。
编辑
感谢您的快速答复
我试过了:
'Validechoixoptions'=> function(ControllerManager $cm) {
$sm = $cm->getServiceLocator();
$sm = $sm->get('webapp');
$controller = new \Validechoixoptions\Controller\IndexController($sm);
return $controller;
}
我在 Module.php 的这个方法中有 webapp :
public function getServiceConfig()
{
return array(
'factories' => array(
'webapp' => new AdapterServiceFactory('webapp'),
但是,我有一个错误:
:缺少 Validechoixoptions\Controller\IndexController::__construct() 的参数 1,在第 170 行的 /usr/local/zend/share/ZendFramework2/library/Zend/ServiceManager/AbstractPluginManager.php 中调用,并在 Validechoixoptions/Controller/ 中定义第 32 行的 IndexController.php
我需要 serviceLocator,因为我必须在我的控制器的 __construct 中创建我的模型实例,并且我使用 serviceLocator 就像 __construct 模型的参数一样
谢谢
编辑 2
非常感谢,它有效,我没有评论
'Validechoixoptions\Controller\Index' => 'Validechoixoptions\Controller\IndexController'
在config/module.config.php
:)
【问题讨论】:
标签: php zend-framework2