2016-10-12 2 views
1

나는 Laravel에 익숙하기 때문에 별도의 방법으로 유효성 검사 양식을 시도했습니다. 하지만 오류를 다시 표시하고 표시하는 방법을 모르겠습니다. 주요 문제는 오류를 표시하는 것입니다. 가장 좋은 경우는 검증 방법에서 오류를 설정하고 Symfony의 기본 양식 오류 렌더링을 대신 할 수있는 경우입니다.유효성 확인 방법의 symfony 디스플레이 폼 오류

내 접근 방식이 완전히 잘못되었을 수 있습니다. 그렇다면 올바른 방향으로 나를 안내 할 수 있기를 바랍니다.

/** 
* @Route("/form") 
* @Method("POST") 
*/ 
public function formAction(Request $request) 
{ 
    $state = new State(); 

    $form = $this->createFormBuilder($state) 
     ->add('name', TextType::class) 
     ->add('save', SubmitType::class, array('label' => 'Submit')) 
     ->getForm(); 

    $form->handleRequest($request); 

    if ($form->isSubmitted()) { 
     if (!$form->isValid()) { 
      // How to pass errors? 
      return $this->redirectTo('/form'); 
     } 

     // ... Store State 
    } 

    // ... 
} 
+0

Symfony에서, 폼의 표시, 확인 및 저장은 일반적으로 단 한 번의 작업으로 수행됩니다. –

+0

'isValid()'부분을 제외하고 동일한 코드를 두 번 사용합니다. 한 번에 모든 작업을 수행하십시오. 여기처럼 : http://symfony.com/doc/2.8/forms.html#handling-form-submissions –

답변

0

1) 밖으로 this

을 확인

나는 양식을 확인하고 오류에 다시 리디렉션 할 양식을 만들고 나뭇 가지

/** 
* @Route("/form") 
* @Template("Bundle::form.html.twig") 
* @Method("GET") 
*/ 
public function formAction(Request $request) 
{ 
    $state = new State(); 

    $form = $this->createFormBuilder($state) 
     ->add('name', TextType::class) 
     ->add('save', SubmitType::class, array('label' => 'Submit')) 
     ->getForm(); 

    return [ 
     'form' => $form->createView(), 
    ]; 
} 

그리고 다른 방법을 렌더링하는 방법을 만들어

2) 컨트롤러에서 오류를 정말로 추가하려는 경우 :

use Symfony\Component\Form\FormError; 
// ... 
$form->get('name')->addError(new FormError('Wrong name you fool :p'));