2017-12-07 3 views
0

私はバリデーターから私のエラーメッセージを視覚化しようとします。 私は、次の例を記述する場合: -symfony検証エラーを表示するには?

{{ form_errors(form.pGWeek) }} 

それが正常に動作し、私はメッセージを取得します。しかし、私のフォームには200フィールドしかないので実用的ではありません。

だから私はこのような形式の最後に、すべてのメッセージで配列を反復処理したい:

{% if form.name.vars.errors|length > 0 %} 
    <ul class="form-errors name"> 
    {% for error in form.name.vars.errors %} 
     {{ error }} 
{% endfor %} 
    </ul> 
{% endif %} 

しかし、私はいくつかのメッセージを取得できませんでした。同様に私はいくつかの別のバージョンを試してみました..しかし何も働かなかった。私はSymfony 2.7を使用しています。

私に誰かにヒントを与えることができますか?

フィードバックをお寄せいただきありがとうございます。

答えて

0

フォームの各子のすべてのエラーを各入力フィールドの横に表示せずに表示したいだけですか?
そして、あなたはformのすべてchildrenを反復処理する可能性のあるerrorsこのchildrenに登場し、もしそうなら、このchildrenのすべてerrorsを反復処理すると、確認してください。

{% for children in form.children %} 
     {% if children.vars.errors is defined %} 
      {% for error in children.vars.errors %} 
       {#{{ dump(children) }}#} 
       {#{{ dump(error) }}#} 
       {{ dump(children.vars.name ~ ': ' ~ error.message) }} 
      {% endfor %} 
     {% endif %} 
    {% endfor %} 

description: This value should not be blank.のようなエラーになる:それはそのようなものである可能性があります。

+0

ありがとうございます!それは私が望んだように、うまく動作します:) – helmi

-1

あなたは、依存インジェクタを使用してコントローラ内のループと状態を作り、その後ビューの中でエラーの配列を繰り返してdivに入れて、どこでも好きな場所に置くことができます:

$errors = $this->get('validator')->validate(yourObject); 
     if (!empty($errors)) { 
      foreach ($errors as $error) 
       throw new \Exception($error->getMessage()); 
     } 

これは、プロセスを停止して例外を取得したいが、そのエラーを表示したい場合は、似たようなものを作成し、そのforeachを削除してtwigテンプレートをレンダリングして$あなたのテンプレートでは、エラーを変数に渡すだけで、エラーを得るためのforループを作成する必要があります!

+0

例外?私はhelmiがSymfonyフォームコンポーネントを使用していて、例外をスローしませんが、エラーを返すので、 '{{form_errors()}} 'を使うことができます。これは質問に答えません。 –

関連する問題