Symfony命令中的Swift邮件

8
我尝试使用Symfony命令行发送Swift邮件,但是遇到了以下异常:
Fatal error: Call to undefined method Symfony\Bundle\TwigBundle\Debug\TimedTwigE
ngine::renderView() in ...

我从创建ContainerAwareCommand命令中得到了一个容器,将其添加到了这个类中。

该函数的代码如下:

private function sendViaEmail($content) {
    $message = \Swift_Message::newInstance()
            ->setSubject('Hello Email')
            ->setFrom('123@gmail.com')
            ->setTo('123@gmail.com')
            ->setBody(
            $this->container->get('templating')->renderView(
                    'BatchingBundle:Default:email.html.twig', array('content' => $content)
            )
    );
    $this->get('mailer')->send($message);
}

更新 抛出异常的行是$this->container->get('templating')->renderView(

从代码中可以看到,最后一行也可能会失败,因为它最终到达那里。

1个回答

13

正如错误信息所说,在TwigEngine中没有renderView方法。renderView()是在Symfony基本控制器类中的一个快捷方式:

namespace Symfony\Bundle\FrameworkBundle\Controller

class Controller extends ContainerAware
{
    /**
     * Returns a rendered view.
     *
     * @param string $view       The view name
     * @param array  $parameters An array of parameters to pass to the view
     *
     * @return string The rendered view
     */
    public function renderView($view, array $parameters = array())
    {
        return $this->container->get('templating')->render($view, $parameters);
    }
}

在那里,您可以看到使用templating服务呈现视图的正确方法。

$this->container->get('templating')->render(
    'BatchingBundle:Default:email.html.twig', array('content' => $content)
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接