4
我試圖通過symfony 2.0命令(由cron調用)向用戶發送提醒。問題是我們的網站是多語言的(默認是法語)。在symfony命令中多次更改區域設置
我在發送提醒的循環的每個步驟設置區域設置。該區域設置是第一次正確設置。但在後續步驟中,就好像最新的區域設置更改沒有反映在模板中,並且模板被轉換爲第一步的區域設置。
我想知道如何修復它,以便反映區域設置更改。
下面是一些供參考的代碼(簡化):
<?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('[email protected]' => '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
?>
感謝您的幫助!
謝謝,這解決了這個問題! – ChMat
以下在這種情況下完全沒用。 ($ session) - > setLocale($ reminder-> getLocale()); $ get-> getContainer() - > get('session') - > setLocale($ reminder-> getLocale()); – ChMat