Вы не должны использовать вставного менеджера представления, чтобы добраться до помощника переводчика. Схватите переводчика как Я уже объяснил здесь.
Скопировать/вставить той почты:
Перевод сделан через Переводчик
. Переводчик - объект и введенный, например, в помощнике представления, поэтому если вы вызываете того помощника представления, он использует переводчика, чтобы перевести ваши последовательности. Для этого ответа я предполагаю, что вы формировали переводчика все равно как скелетное применение.
Лучший способ состоит в том, чтобы использовать фабрику, чтобы ввести это как зависимость в вашего диспетчера. Конфигурация диспетчера:
'controllers' => array(
'factories' => array(
'my-controller' => function($sm) {
$translator = $sm->getServiceLocator()->get('translator');
$controller = new MyModule\Controller\FooController($translator);
}
)
)
И сам диспетчер:
namespace MyModule;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\I18n\Translator\Translator;
class FooController extends AbstractActionController
{
protected $translator;
public function __construct(Translator $translator)
{
$this->translator = $translator;
}
}
Альтернатива должна потянуть переводчика от менеджера по сервису в вашем действии, но это менее гибкое, менее тестируемое и более твердое поддержать:
public function fooAction()
{
$translator = $this->getServiceManager()->get('translator');
}
In both cases you can use $translator->translate('foo bar baz')
to translate your strings.