2016-05-02 11 views
1

私は一般的な質問をしました。提出されたフォームの現在の正しい処理方法はどのように見えるのでしょうか?symfonyのドキュメントは、適切な方法を明確にしていません。
は現在、私はいつもこのような何かやっている:symfonyのプロセスは、フォームを提出しました

if ($request->isMethod(Request::METHOD_POST)) { 
    $form->handle($request) 
    if ($form->isValid()) {...} 
} 

を私はまた、この文を使用している(また、symfonyのドキュメントで)いくつかの例を見てきました:

$form->handle($request); 
if ($form->isSubmitted() && $form->isValid()) {...} 

だから、誰が何を知っているんsymfonyの開発者のガイドラインに従うための現在の正しい方法は、最初のステートメントを使用するか2番目にするべきか、あるいは両方を組み合わせるべきです($ request-> isMethodコールまたは$ form-> isSubmittedのいずれかを冗長にします)

答えて

5

は、技術的に必要なものは次のとおりです。

  • isValid()チェックがisSubmittedチェックが含まれていますので、

    if ($form->isValid()) { 
        ... 
    } 
    

    だこと。

  • isMethod(Request::METHOD_POST)チェックは、フォームがPOST

とは異なる方法を使用することができますしかし、あなたが本当にベストプラクティスに従うことをしたい場合は、あなたが使用する必要があります(必ずしも正しくない。

if ($form->isSubmitted() && $form->isValid()) { 
    ... 
} 

http://symfony.com/doc/current/best_practices/forms.html#handling-form-submits用を参照してください。詳細

追加情報

のデータが実際に検証される前に特別なタスクを実行する場合は、isSubmittedメソッドを別途使用してください。カスタム検証には頻繁に使用します。

if ($form->isSubmitted()) { 
    ... 
    if ($form->isValid()) { 
     ... 
    } 
} 
+0

thx、それはまさに私が探していたものです – Nickolaus

0

一般にどちらも正しいです。 単に最初の例では、2番目に単純に送信を確認し、検証を行うときに要求タイプのチェックがあります。

+0

は、私は両方の仕事は、しかし、1つだけのリクエストメソッドをチェック – Nickolaus

+0

まずサンプルをスタイリング「標準」のコードである指針がなければならないことを知っている - 要求がない場合はPOSTが/この例では、などPUT/GET POSTメソッドフォームは処理されません。 2番目のサンプルフォームでは、どのリクエストメソッドでも処理されるので、単に '$ form-> isSubmitted()'を使用します。これは次のようなものです: 'if($ request-> isMethod(Request :: METHOD_POST)|| $ request-> isMethod(Request :: METHOD_GET))。したがって、2番目には単にこのチェックを省略しました。 –

関連する問題