使用Put方法在symfony表单中将表单提交为False

时间:2017-05-09 16:05:27

标签: symfony symfony-forms

我使用form.factory创建表单和树枝来呈现表单。在这种情况下,我必须使用PUT方法。我的代码是:

控制器:

$builder = $this->get('form.factory')->createNamedBuilder();
$form = $builder
    ->add('id', HiddenType::class, array('data' => $id))
    ->add('email', EmailType::class, array(
        'required' => false,
        'data' => count($res['result'][0]['email']) ? $res['result'][0]['email'] : '',
        'attr' => array('class' => 'form-control label_form_symfony'),
        'constraints' => array(
            new Email(array('message' => 'il campo Email non è valido'))
        )
    ))
    ->getForm();

$form->handleRequest($request);

if ($form->isSubmitted() && $request->isXmlHttpRequest()) {
    $data = $form->getData();

    if ($form->isValid()) {
        // save ...
    }
}

Twig模板:

{{ form_start(form,{'method':'PUT','attr':{action: path('update_xxx',{'id' : id})}}) }}
    {{ form_widget(form, {'attr' : {'class' : 'label_form_symfony' } } ) }}
    <button type="submit" class="submit_form btn btn-default">Save</button>
    <div id="feedback"></div>
{{ form_end(form) }}

当我提交表单时,我的‌‌$request->getMethod()PUT,但我的‌‌$form->isSubmitted()false

在我的HTML中,我甚至有隐藏的字段:

<input type="hidden" name="_method" value="PUT">

更新 我补充道 在我的控制器中$builder->setMethod('PUT')并从我的树枝上移除'method':'PUT',当我提交表单时出现此错误This form should not contain extra fields.

1 个答案:

答案 0 :(得分:3)

问题是因为默认情况下,handleRequest()方法检查表单方法(已为表单配置)是否等于请求方法。默认情况下,表单为POST

只需使用setMethod功能即可。 $builder->setMethod('PUT')或者您也可以在表单类型类的默认选项中设置它。