Php ZF2转换器进入控制器
我试图在我的应用程序中使用转换器,如下面的示例所示,但我遇到了错误 module.config.phpPhp ZF2转换器进入控制器,php,zend-framework2,translation,factory,Php,Zend Framework2,Translation,Factory,我试图在我的应用程序中使用转换器,如下面的示例所示,但我遇到了错误 module.config.php 'controllers' => array( 'factories' => array( 'Application\Controller\AjaxController' => function($sm) { $translator = $sm->getServiceLocator()->get
'controllers' => array(
'factories' => array(
'Application\Controller\AjaxController' => function($sm) {
$translator = $sm->getServiceLocator()->get('translator');
$controller = new Application\Controller\AjaxController($translator);
}
),
use Zend\Mvc\Controller\AbstractActionController;
use Zend\I18n\Translator\Translator;
use Zend\View\Model\JsonModel;
use Zend\Session\Container;
use Zend\Debug\Debug;
class AjaxController extends AbstractActionController
{
protected $translator;
public function __construct(Translator $translator)
{
$this->translator = $translator;
}
AjaxController.php
'controllers' => array(
'factories' => array(
'Application\Controller\AjaxController' => function($sm) {
$translator = $sm->getServiceLocator()->get('translator');
$controller = new Application\Controller\AjaxController($translator);
}
),
use Zend\Mvc\Controller\AbstractActionController;
use Zend\I18n\Translator\Translator;
use Zend\View\Model\JsonModel;
use Zend\Session\Container;
use Zend\Debug\Debug;
class AjaxController extends AbstractActionController
{
protected $translator;
public function __construct(Translator $translator)
{
$this->translator = $translator;
}
错误输出
Catchable fatal error: Argument 1 passed to Application\Controller\AjaxController::__construct()
must be an instance of Zend\I18n\Translator\Translator, instance of
Zend\Mvc\I18n\Translator given, called in
*****/module/Application/config/module.config.php on line 515 and defined in
*****/module/Application/src/Application/Controller/AjaxController.php on line 26
从错误消息来看,您似乎使用了错误的转换器。尝试将use子句从
Zend\I18n\Translator\Translator
更改为Zend\Mvc\I18n\Translator
,结果是:消息:调用了工厂,但未返回实例。@directory Add areturn$controller代码>到您的工厂。