Symfony2和嵌入式控制器

时间:2014-10-08 09:53:01

标签: php symfony service

我的表单服务有问题...在我的页脚(在布局中),我有一个表单,但它不起作用,我不知道为什么。你怎么称呼" createForm"方法,因为Symfony2.5返回的错误是:

  

尝试调用方法" createForm"在课堂上   "昏暗\ WebsiteBundle \服务\ QuickContact"在   ... / Symfony的/ src目录/点心/ WebsiteBundle /服务/ QuickContact.php   第47行。

我的服务(命名空间Dim \ WebsiteBundle \ Service):

class QuickContact
{

  private $request;
  private $formFactory;

  public function setRequest(RequestStack $request_stack)
  {
    return $this->request = $request_stack->getCurrentRequest();
  }

  public function setFormFactory($formFactory)
  {   
    return $this->formFactory = $formFactory;
  }

  public function indexAction()
  { 
    $Contact = new Contact();

    # Create the form with the contact entity constraints
    $form = $this->formFactory->create(new ContactType(), $Contact);

    if($this->request->isMethod('POST')) 
    {
      $form->bind($this->request);

      if($form->isValid()) 
      {
       echo 'formulaire valide';
      }
    }

    $this->request->getSession()->set('form', $form);
  }

}

我的service.yml:

services:
     dim_website.quickcontact:
         class: Dim\WebsiteBundle\Service\QuickContact
         calls:
            - [setRequest, [@request_stack], setFormFactory, [@form.factory]]

在我的布局中,我调用索引方法:

{{ quickcontact.indexAction() }}

为了您的信息,我的ContactType和他的实体工作正常。

谢谢大家的帮助。 最好的问候,

1 个答案:

答案 0 :(得分:1)

我不确定你为什么要像现在这样做,但要回答你的问题:你在createForm课程上调用方法QuickContact,显然没有&#39} ; t定义了createForm方法。

你应该在你的情况下调用$this->formFactory->create(new ContactType(), $Contact)