0

Symfony 2で構築され、 Twigでレンダリングされた私のフォームのいくつかのフィールド値が有効ではなく、検証エラーを受け取ったと仮定しましょう。このエラーを表示するだけでなく、無効な各フィールドに特別なクラスを割り当てたいです。

例えば:

<input type="text" class="error">

どうやってやるの?私が理解しているように、フォーム テンプレートを再宣言する必要があります。具体的なフィールド検証が失敗した場合に属性を割り当てる方法の実例はありますか?

私が今見つけたのは、このクラスをフォーム テンプレートに設定する必要があるということだけです。

{% set attr = attr|merge({'class': attr.class|default('') ~ (errors|length > 0 ? ' error' : '') }) %}

しかし、私が理解していないのは、正確なフィールドを指定する方法ですか? どんな助けでも感謝します。

4

2 に答える 2

1

これは私のために働く:

<div class="input{{ form_errors(form.expiry) == '' ? '' : 'error' }}">
    {{ form_widget(form.expiry) }}
</label>

あなたもできる

{{ form_widget(form.expiry, {'attr': {'class': form_errors(form.expiry) == '' ? '' : 'error'}}) }}
于 2015-01-07T05:06:14.260 に答える
0

使用する場合

{{ form(form) }}

あなたのフォームを表示するために、私はあなたが望むものを達成できないと確信しており、少なくとも私はその可能性を認識していません.

こんなものを使えば

{{ form_row(form.task) }}
{{ form_row(form.dueDate) }}

私はまだあなたが望むものを手に入れることができないと確信しています.

あなたが必要とするものに対する私の解決策は、次のようなものを作ることです:

{{ form_start(form) }}
    {{ form_errors(form) }}

    <div>
        {{ form_label(form.task) }}
        {{ form_errors(form.task) }}
        {{ form_widget(form.task) }}
    </div>

    <div>
        {{ form_label(form.dueDate) }}
        {{ form_errors(form.dueDate) }}
        {{ form_widget(form.dueDate) }}
    </div>

<input type="submit" />

{{ form_end(form) }}

フォームオブジェクトから検証エラーに関する情報を取得し、 {{ form_widget(form.task) }} を次のように置き換えます

{{ form_widget(form.task, {'attr': {'class': 'error'}}) }}

そのフィールド タスクが検証に失敗した場合。

さらに遅くて時間のかかる解決策は、それぞれが実際に各フォームフィールドのビューの「あなたの」デザインを表す小さな小枝ファイルを作成し、フォームから再び来る引数でそれらの「小さな小枝」を呼び出すことです。不正な検証に関するデータを含むオブジェクト。

実際に独自のフォーム フィールド デザインを作成するフォーム レンダリングの詳細については、こちらを参照してください。

http://symfony.com/doc/current/cookbook/form/form_customization.html

于 2013-07-08T06:51:12.710 に答える