我正在使用命令类发送cron邮件。如何设置发送电子邮件的区域设置?
$this->getRequest()->setLocale('de');
在我的情况下,每个用户都有不同的区域设置。 如何在命令类中设置语言环境?
我尝试$this->getRequest()->setLocale('de');
并收到错误:
namespace IT\bBundle\Command;
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
class CronCommand extends ContainerAwareCommand {
protected function configure()
{
$this
->setName('send:emails')
->setDescription('Envio programado de emails');
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$message = \Swift_Message::newInstance()
->setSubject('bla bla')
->setFrom('x@x.com')
->setTo('x@gmail.com')
->setCharset('UTF-8')
->setContentType('text/html')
->setBody($this->renderView('mainBundle:Email:default.html.twig'));
$this->getContainer()->get('mailer')->send($message);
$output->writeln('Enviado!');
} }
答案 0 :(得分:7)
我解决了这个问题,我用过:
$this->getContainer()->get('translator')->setLocale('de');
在命令类中为cron邮件翻译设置语言环境。
答案 1 :(得分:1)
当你有ContainerAwareCommand
时,你可以从你的配置文件中读取值并将其手动插入翻译器,如下所示:(在SF 2.8中测试)
$locale = $this->getContainer()->getParameter('locale');
$this->getContainer()->get('translator')->setLocale($locale);