我想在 Controller 以外的其他类中使用 renderView()。
class RegistrationFormHandler extends BaseRegistrationFormHandler
{
protected function onSuccess(UserInterface $user, $confirmation)
{
$messaggio = \Swift_Message::newInstance()
...
->setBody($this->renderView('AcmeMemberBundle:Default:firstemailtocustomer.txt.twig',array('user' => $user)));
表明
FatalErrorException: Error: Call to undefined method Acme\UserBundle\Form\Handler\RegistrationFormHandler::renderView() in
但是如果您在控制器类中尝试相同的方法。
class DefaultController extends Controller
{
public function mainAction(){
$messaggio = \Swift_Message::newInstance()
...
->setBody($this->renderView('AcmeMemberBundle:Default:firstemailtocustomer.txt.twig',array('user' => $user)));
它运作良好。
我想我应该得到控制器类的实例。
我该如何解决这个问题?
感谢蒂姆的回答。
我将此添加到 services.xml
<service id="acme.default.controller" class="Acme\MemberBundle\Controller\DefaultController" public="false">
<argument>acme.controller.default.class</argument>
</service>
并像这样使用
->setBody($this->forward('acme.controller.default.class')->renderView('AcmeMemberBundle:Default:firstemailtocustomer.txt.twig',array('user' => $user)));
但它说,
FatalErrorException: Error: Call to undefined method Acme\UserBundle\Form\Handler\RegistrationFormHandler::forward() in