如何在模型中获得翻译器?
在内部视图中,我们可以使用此代码获取翻译器
$this->translate('Text')
在控制器内部,我们可以使用此代码获取翻译器
$translator=$this->getServiceLocator()->get('translator');
$translator->translate("Text") ;
但是如何在模型中获得翻译器?
我尝试了很多方法来获取模型 2 中的服务定位器
1)使用MVC事件
$e=new MvcEvent();
$sm=$e->getApplication()->getServiceManager();
$this->translator = $sm->get('translator');
如果我 pring $sm 它显示为空。但它在 Model.php onBootstrap 中运行良好
2)创建了一个实现ServiceLocatorAwareInterface SomeModel.php的模型
<?php
namespace Web\Model;
use Zend\ServiceManager\ServiceLocatorAwareInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
class SomeModel implements ServiceLocatorAwareInterface
{
protected $services;
public function setServiceLocator(ServiceLocatorInterface $locator)
{
$this->services = $locator;
}
public function getServiceLocator()
{
return $this->services;
}
}
并在我的模型中使用它
$sl = new SomeModel();
$sm=$sl->getServiceManager();
var_dump($sm); exit;
$this->translator = $sm->get('translator');
这也打印空。