Symfony 使用控制器类';另一类中的s方法
我想使用renderView() 在控制器以外的类中Symfony 使用控制器类';另一类中的s方法,symfony,Symfony,我想使用renderView() 在控制器以外的类中 class RegistrationFormHandler extends BaseRegistrationFormHandler { protected function onSuccess(UserInterface $user, $confirmation) { $messaggio = \Swift_Message::newInstance() ... ->s
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)));
它工作得很好
我想我应该得到控制器类的实例
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>
但是它说,
FatalErrorException: Error: Call to undefined method Acme\UserBundle\Form\Handler\RegistrationFormHandler::forward() in
创建一个您可以使用的控制器 然后打电话:
$this->forward('acme.hello.controller:mainAction');
从
RegistrationFormHandler
创建一个控制器,您可以
然后打电话:
$this->forward('acme.hello.controller:mainAction');
当您使用
$this->renderView();
在控制器中,您使用的是
$this->container->get('templating')->renderView();
因此,如果您只是在另一个类中注入symfony的模板服务,您可以从那里使用renderView
更多详细信息,请参阅symfony文档:当您使用
$this->renderView();
在控制器中,您使用的是
$this->container->get('templating')->renderView();
因此,如果您只是在另一个类中注入symfony的模板服务,您可以从那里使用renderView
更多详细信息请参见symfony文档:您应该使用此
$this->container->get('templating')->renderResponse('AcmeMemberBundle:Default:firstemailtocustomer.txt.twig',array('user' => $user))->getContent();
你应该用这个
$this->container->get('templating')->renderResponse('AcmeMemberBundle:Default:firstemailtocustomer.txt.twig',array('user' => $user))->getContent();
谢谢Tim,但是在我的UserBundle中需要services.xml。我在文章中添加了这些信息。如果您有时间,请帮助我/我认为您应该只从控制器内部调用
renderView()
——您必须在某个地方有一个加载表单验证类的控制器。validation类应该只执行验证,并向控制器返回一个boolean
,然后您可以在控制器中呈现视图。我在另一个类(RegistrationFormHandler)中调用forward。您认为我的xml语法正确吗?我不确定xml或php脚本中哪里存在错误。啊,我知道这是php错误,但我不确定我的xml symtax是否正确,注入是否集体设置,但在我的UserBundle中需要services.xml。我已将信息添加到文章中。如果您有时间,请帮助我/我认为您应该只调用renderView()
从控制器内部-您必须在加载表单验证类的某个位置有一个控制器。validation类应该只执行验证,并向控制器返回一个boolean
,然后您可以在控制器中呈现视图。我在另一个类(RegistrationFormHandler)中调用forward。您认为我的xml语法正确吗?我不确定xml或php脚本中哪里存在错误。啊,我理解这是php错误,但我不确定我的xml symtax是否正确,以及注入是否集体设置