【问题标题】:ZF2 translator into controllerZF2 转换器到控制器
【发布时间】:2015-12-15 20:10:51
【问题描述】:

我正在尝试在我的应用程序中使用翻译器,如下面的示例所示,但我遇到了错误。

module.config.php

'controllers' => array(
        'factories' => array(
            'Application\Controller\AjaxController' => function($sm) {
               $translator = $sm->getServiceLocator()->get('translator');
               $controller = new Application\Controller\AjaxController($translator);
         }
  ),

AjaxController.php

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

【问题讨论】:

    标签: php zend-framework2 translation factory


    【解决方案1】:

    从错误消息看来,您使用了错误的翻译器。尝试将您的 use 子句从 Zend\I18n\Translator\Translator 更改为 Zend\Mvc\I18n\Translator

    【讨论】:

    • 这会导致:消息:工厂被调用但没有返回实例。
    • @directory 将return $controller; 添加到您的工厂。
    猜你喜欢
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多