2016-07-11 5 views
1

Symfony 3의 양식으로 고민하고 있습니다.Symfony 3를 사용하는 양식

설정이 매우 간단합니다. C.

namespace AppBundle\Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 
use Symfony\Component\OptionsResolver\OptionsResolver; 

class MovieFormType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('title') 
      ->add('genre') 
      ->add('budget'); 
    } 

    public function configureOptions(OptionsResolver $resolver) 
    { 

    } 

} 

/src/AppBundle/Form/MovieFormType.php

에 /src/AppBundle/Controller/Admin/MovieAdminController.php에

A. 컨트롤러

namespace AppBundle\Controller\Admin; 

use AppBundle\Form\MovieFormType; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\HttpFoundation\Request; 

/** 
* @Route("/admin") 
*/ 
class MovieAdminController extends Controller 
{ 
    [...] 

    /** 
    * @Route("/movie/new", name="admin_movie_new") 
    */ 
    public function newAction(Request $request) 
    { 
     $form = $this->createForm(MovieFormType::class); 

     $form->handleRequest($request); 

     if ($form->isSubmitted() && $form->isValid()) { 
      dump($form->getData()); 
     } 

     return $this->render('admin/movie/new.html.twig', [ 
      'movieForm' => $form->createView() 
     ]); 
    } 
} 

B.의 formtype 나뭇 가지 템플릿 : 나는 무서운 메시지가 계속 양식을 제출하면

[...] 
{{ form_start(movieForm) }} 
{{ form_widget(movieForm) }} 

<button type="submit" class="btn btn-primary">Save</button> 

{{ form_end(movieForm) }} 
[...] 

"는 CSRF 토큰 invali입니다 디. . 토큰에 숨겨진 필드가 않습니다 "양식을 다시 제출

양식을 시도하지만, 제출 된 값이 세션에서 값과 다른 것을 날 것으로 보인다 제발 내가 보는 프로파일에

을. :

POST 매개 변수

movie_form [ title => blabla, genre => blabla, budget => 123, _token => e-zvG9Gk0qBJzTE4exIK3K5katq9-_AFEAWyTptx7rg ] 

세션 매개 변수

_csrf/movie_form QxbBQISsIwQLUlwWwAPa_l2xZbB5zqdHOwaOxrNAHtg 

도움을 주셔서 감사합니다.

답변

1

내 문제를 해결할 수있었습니다.

모두는 Symfony 세션 처리 때문이었습니다. Vagrant VM (Debian Jessie)에서 작업 중이며 app/config/config.yml의 표준 설정이 작동하지 않습니다 (Github의 issue 참조).

그것은 단지 하나의 작은 변화이다 : 라인

handler_id: session.handler.native_file 

를 검색하고

handler_id: ~ 

로 변경 그리고 모두가 100 % 일하기 시작했다.

0

{{ form_end(movieForm) }}{{form_rest(movieForm)}} 앞에 광고를 삽입해야합니다. 귀하의 코드는 다음과 같습니다

{{ form_start(movieForm) }} 
{{ form_widget(movieForm) }} 
{{form_rest(movieForm)}} 
<button type="submit" class="btn btn-primary">Save</button> 

{{ form_end(movieForm) }} 
+0

감사합니다. 리카르도,하지만 내 자신의 대답에서 볼 수 있듯이, 문제는 세션 처리 설정으로 인한 것입니다. 도와 주셔서 다시 한 번 감사드립니다. – chieroz