我尝试使用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(
正如你在代码中看到的那样,最后一行可能会失败,直到它最终到达那里.
正如错误消息所述,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);
- }
- }
在那里,您可以看到使用模板服务呈现视图的正确方法.
- $this->container->get('templating')->render(
- 'BatchingBundle:Default:email.html.twig',array('content' => $content)
- )