我想通过Symfony 2.0命令(由cron调用)向用户发送提醒。问题在于我们的网站是多语言的(默认语言是法语)。
我在每个发送提醒的循环步骤中设置了区域设置。第一次正确设置了区域设置。但是在接下来的步骤中,最新的区域设置更改似乎没有反映在模板中,因此模板被翻译为第一步的区域设置。
我想知道如何修复这个问题,使区域设置更改得到反映。
以下是一些简化的参考代码:
感谢您的帮助!
我在每个发送提醒的循环步骤中设置了区域设置。第一次正确设置了区域设置。但是在接下来的步骤中,最新的区域设置更改似乎没有反映在模板中,因此模板被翻译为第一步的区域设置。
我想知道如何修复这个问题,使区域设置更改得到反映。
以下是一些简化的参考代码:
<?php
// This loop is inside the execute() function of a symfony service (implements ContainerAwareCommand)
// …
// Sending reminders one at a time
foreach ($reminders as $reminder)
{
$message = \Swift_Message::newInstance();
$message->setFrom(array('noreply@domain.com' => 'YourBot'));
// Change locale to that of the user
$this->getContainer()->get('session')->setLocale($reminder->getLocale());
$templating = $this->getContainer()->get('templating');
// Reminder text
$email_message = $templating->render('MyBundle:Reminder:reminder.html.twig');
$message->setSubject('Reminder')
->setTo($reminder->getEmail())
->setBody($email_message, 'text/html');
$this->getContainer()->get('mailer')->send($message);
// Update reminder status
$reminder->setEmailSent(true);
$emSymfony->persist($reminder);
}
// … subsequent code
?>
感谢您的帮助!