Пытаюсь обработать форму в Symfony2, все значения из нее получаю в контроллере, но при вызове:
$form->isValid()
он возвращает ложь. Я пытаюсь обработать форму в другом контроллере.
Форма отображается в виде двух частей: сначала некоторые личные данные, а затем дополнительная информация, но в событии отправки формы я объединяю все значения, сериализующие формы. Вот как я отображаю форму в представлении:
<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:
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 :(
}
}
}
Я делаю что-то неправильно???
Спасибо!!!