0

私はコレクションを持つフォームを持っています:

$builder->add('languages', 'collection', array(
    'type'           => new LanguageType(),
    'allow_add'      => true,
    'allow_delete'   => true,
    'by_reference'   => false
));

twig-template では、空の (LanguageType) で追加の行をレンダリングします。そのために、プロトタイプを使用してnameを置き換えます。

コントローラーでリクエストをバインドし、セッターで「空の」言語を破棄します。

public function addLanguage($lang)
{
    if($lang->getLanguage())
    {
        $this->languages->add($lang);
    }
    // discard the others
}

何らかの理由で、「空の」行は NotBlank バリデーターを介して検証エラーをスローします。

私の唯一の有効な解決策は、raw-Request から空の行を削除することですが、それは醜いです。

4

1 に答える 1

0

あなたのソリューションは有効です。

それ以外の場合は、オプションrequiredfalseオンに設定できますが、その場合$builder->add('lang')、自分で追加のチェックを行う必要があります。

$builder->add('lang', 'text', array(
    'required' => false
));

必要なオプションに関するドキュメント。

または、フィールドが空でない場合にのみ入力の名前を挿入する JS コードを作成できます (空の名前の入力には値が送信されません)。それも素晴らしいことではありませんが、うまくいきます。

于 2013-03-18T16:21:18.157 に答える