2015-12-15 83 views
0

我試圖在我的應用程序中使用翻譯器,如以下在我的示例中所示,但是我陷入了錯誤。ZF2翻譯成控制器

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 

回答

2

從E恐怖消息,似乎你使用了錯誤的翻譯器。嘗試將您的使用條款從Zend\I18n\Translator\Translator更改爲Zend\Mvc\I18n\Translator

+0

結果爲: 消息: 工廠被調用但未返回實例。 – directory

+0

@directory將'return $ controller;'添加到您的工廠。 – AlexP