在 symfony2 中从命令行发送电子邮件

2022-08-30 15:24:39

我需要从 symfony2 中的命令类中呈现一个树枝模板。

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!');
    }
}

但是当我执行该命令时,我收到以下错误:php app/console send:emails

致命错误:调用未定义的方法IT\bBundle\Command\CronCommand::renderView()

如何渲染视图?


答案 1

这是因为 renderView 是类 Controller 的方法。而不是尝试:

$this->getContainer()->get('templating')->render(...);

答案 2

改变

$this->renderView()

$this->getContainer()->get('templating')->render()

推荐