在我的cronjob模块中,我正在运行一些带有模板的电子邮件脚本。现在我想在电子邮件模板中添加一些网址,例如取消订阅,但是带有翻译slugs的路线似乎存在问题。
例如,我有这些路线,我想将它们都包含在我的电子邮件模板中。
'newest' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '{newest}.html',
'defaults' => array(
'controller' => 'Application\Controller\IndexController',
'action' => 'newest',
),
),
),
和
'contact' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => 'contact.html',
'defaults' => array(
'controller' => 'Application\Controller\IndexController',
'action' => 'contact',
),
),
),
联系路线没问题,工作正常!但是当我试图包含最新的路线时,它出错了,一个捕获错误检查给了我回复信息:
string(22) "No translator provided"
嗯,我理解这一点。似乎没有提供翻译,因为它基于我的应用程序模块的Module.php中的语言环境。
我会说,我应该能够强制这个译者使用翻译器吗?比如,在从命令行触发路由时在我的参数中使用参数。
下面的代码是我当前的代码,我想我需要以某种方式设置翻译器吗?
$request = $this->getRequest();
if (!$request instanceof ConsoleRequest)
throw new \RuntimeException('Only access via console!');
$country = $request->getParam('country');
$sm = $this->serviceLocator;
$http = $sm->get('HttpRouter');
$render = $sm->get('ViewRenderer');
$event = $this->getEvent()->setRouter($http);
$config = $sm->get('config');
$server_url = $config['server_url'][$country];
try {
var_dump($server_url . $this->url()->fromRoute('home/newest'));
var_dump($server_url . $this->url()->fromRoute('home/contact'));
} catch (\Exception $e) {
var_dump($e->getMessage());
}
exit;