表格在Symfony2中无效

时间:2014-06-04 12:18:22

标签: symfony symfony-2.3

我正在尝试处理Symfony2中的表单,我在控制器中获取了它的所有值,但是当我调用时:

$form->isValid()

它返回false。我正在尝试在不同的Controller中处理表单。

表单分为两部分,首先是一些个人数据,然后是一些更多的信息,但是在表单的提交事件中,我加入了序列化表单的所有值。这是我在视图中呈现表单的方式:

<form id="myform" action="{{ path('_process_my_form') }}" {{ form_enctype(form) }} method="POST">
  {{ form_errors(form) }}
  {{ form_widget(form._token) }}
  {{ form_widget(form.first_name, {'attr': {'class': 'form-control'}} ) }}
  ... // then I render the rest of the personal information widgets
  <button type="submit" class="btn btn-info btn-block">Submit</button>
</form>

<form id="myform2">
  {{ form_widget(form.job_name, {'attr': {'class': 'form-control'}} ) }}
  ... // then I render the rest of the widgets (not personal information)
</form>

然后,在Ajax请求中,我加入了两个这样的形式:

$("#my_form").submit(function(e) {
  e.preventDefault();
  $.ajax({
    type: e.target.method,
    url: e.target.action,
    data: $("#my_form").serialize() + $("#my_form2").serialize(),
    beforeSend: function( xhr ) {},
    success: function(data) {
      //do something...
    }
  });
});

我的_process_my_form规则如下所示:

_process_my_form:
    pattern:   /ajax/process-my-form
    defaults:  { _controller: MyBundle:User:processMyForm }

这是控制Ajax请求的Controller:

public function processMyFormAction(Request $request)
{
  if ($request->isMethod('POST')) 
  {
    $myEntity = new myEntity();
    $form = $this->container->get('form.factory')->create(new myFormType(), $myEntity);
    $form->bind($request);
    if ($form->isValid()) 
    {
      //Process the form... this code is never excecuted :(
    }
  }
}

我做错了吗?

感谢!!!

1 个答案:

答案 0 :(得分:0)

从Symfony 2.3开始,我相信他们改变了表单句柄

$form->bind($request);

$form->handleRequest($request);

但是我不确定前者是否仍然受到支持?据我所知,Form Interface

中不再存在绑定方法

您可以在此处阅读更多内容Symfony Cookbook - Form Direct Submit