我想在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
感謝蒂姆,但在我UserBundle需要的services.xml。 – whitebear
我將信息添加到文章中。請幫助我,如果您有時間/ – whitebear
對不起,'轉發'只適用於另一個控制器。 – Tim