2016-10-12 11 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では、フォームの表示、検証、および保存は、通常、1つのアクションでのみ実行されます。 –

+0

'isValid()'部分を除いて、同じコードを2回使います。 1つのアクションですべてを実行します。ここのように: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')); 
関連する問題