2017-05-09 82 views
1

我使用form.factory創建一個窗體和樹枝來呈現形式。在這種情況下,我必須使用PUT方法。我的代碼是:形式isSubmitted在Symfony形式與僞裝方法的虛假

控制器:

$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 ... 
    } 
} 

嫩枝模板:

{{ 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.

回答

3

由於默認情況下的問題,handleRequest()方法檢查表單方法(表單已配置)是否等於請求方法。默認情況下,該表格的格式爲POST

只需使用setMethod函數。 $builder->setMethod('PUT')或者您也可以將它設置爲表單類型的默認選項。

+0

with'$ builder-> setMethod('PUT')'我有這個錯誤'這個表格不應該包含額外的字段。' – monkeyUser

+0

因爲您忘記刪除了' - 這是一個額外的領域。 –

+0

我不添加''Symfony爲我做的。現在我刪除''方法':'PUT''form Twig並添加'$ builder-> setMethod('PUT')'並在我的Html中有'因爲Symfony是這樣做的 – monkeyUser