小编ChM*_*Mat的帖子

在symfony命令中多次更改语言环境

我正在尝试通过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
?>
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

php command-line locale symfony

5
推荐指数
1
解决办法
1484
查看次数

标签 统计

command-line ×1

locale ×1

php ×1

symfony ×1