2017-05-09 4 views
1

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

나뭇 가지 템플릿 : 내 코드는 내가 양식을 제출하면 내 ‌‌$request->getMethod()PUT

{{ 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) }} 

하지만 내 ‌‌$form->isSubmitted()false입니다. 내 HTML에서

난 숨겨진 필드가 : 내 컨트롤러 $builder->setMethod('PUT') 추가 내가 양식을 제출 때이 오류가, 내 나뭇 가지에서 'method':'PUT'을 제거

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

업데이트를 This form should not contain extra fields.

답변

3

기본적으로이 문제는 handleRequest() 메서드가 양식에 대해 구성된 양식 메서드가 요청 메서드와 동일한 지 확인합니다. 기본적으로 양식의 경우 POST입니다.

그냥 setMethod 기능을 사용하십시오. $builder->setMethod('PUT')이거나 양식 유형 클래스의 기본 옵션으로 설정할 수도 있습니다.

+0

with'$ builder-> setMethod ('PUT')'이 오류는'이 양식은 여분의 필드를 포함해서는 안됩니다. '' monkeyUser

+0

값 = "PUT">'- 추가 필드입니다. –

+0

'''Symfony가 나를 대신합니다. 이제 '메서드'를 제거합니다 : 'PUT''form Twig를 추가하고'$ builder-> setMethod ('PUT ')'을 추가하십시오. 그리고 내 HTML에는'은 그 일을하기 때문에 Symfony가 수행합니다. – monkeyUser