简体   繁体   English

Symfony2和嵌入式控制器

[英]Symfony2 and embedded controller

I have a problem with my form service... In my footer (in a layout), I have a form but it not work and I dont know why. 我的表单服务有问题...在页脚(布局)中,我有一个表单,但它不起作用,我也不知道为什么。 Do you how I can call the "createForm" method because the error returned by Symfony2.5 is : 您是否可以调用“ createForm”方法,因为Symfony2.5返回的错误是:

Attempted to call method "createForm" on class "Dim\\WebsiteBundle\\Service\\QuickContact" in .../Symfony/src/Dim/WebsiteBundle/Service/QuickContact.php line 47. 尝试在... / Symfony / src / Dim / WebsiteBundle / Service / QuickContact.php第47行中的类“ Dim \\ WebsiteBundle \\ Service \\ QuickContact”上调用方法“ createForm”。

My service (namespace Dim\\WebsiteBundle\\Service) : 我的服务(名称空间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);
  }

}

My service.yml : 我的service.yml:

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

In my layout, I call the index method : 在我的布局中,我调用index方法:

{{ quickcontact.indexAction() }}

For your information, my ContactType and his entity work fine. 供您参考,我的ContactType及其实体可以正常工作。

Thanks you all for your help. 谢谢大家的帮助。 Best regards, 最好的祝福,

I'm not sure why you're doing things as you are, but to answer your question: you are calling method createForm on your QuickContact class which obviously doesn't have createForm method defined. 我不确定为什么createForm进行操作,但要回答您的问题:您正在QuickContact类上调用方法createForm ,而该类显然createForm方法。

You should be calling $this->formFactory->create(new ContactType(), $Contact) instead in your case. 在这种情况下,您应该调用$this->formFactory->create(new ContactType(), $Contact)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM