2017-02-14 15 views
2

Symfony 3.0.9でいくつかのChoiceTypeを定義しようとしていますが、フォームには動的な作成オプションの数に応じてajaxが設定されていますが、有効です。Symfony ChoiceType空白配列を初期化

私はこのようなChoiceTypeを定義します。

->add('position', ChoiceType::class, [ 
    'placeholder' => 'Select position', 
    'choices' => [], 
    'attr' => [ 
     'class' => 'form-control choice-position' 
    ], 
]) 

そして、私が手にエラーがある:

Symfony\Component\Validator\ConstraintViolation 
Object(Symfony\Component\Form\Form).children[lessonGroups].children[0].children[position] = 1 

Caused by: 
Symfony\Component\Form\Exception\TransformationFailedException 
Unable to reverse value for property path "position": The choice "1" does not exist or is not unique 

Caused by: 
Symfony\Component\Form\Exception\TransformationFailedException 
The choice "1" does not exist or is not unique 

任意のより詳細な情報が必要になった場合、私は知りません。

ありがとうございました!

+0

あなたのsymfonyのバージョンは何ですか? – goto

+0

フォームイベントを参照する必要があります - http://symfony.com/doc/current/form/dynamic_form_modification.html – Rooneyl

答えて

2

あなたの定義には選択肢が含まれていないため('choices' => [],)、symfonyはユーザが最初に許可された結果に含まれていない結果を送信しようとします。

あなたは利用可能なすべての値を含む選択肢の最初の配列を設定することができたり、使用して、その検証を無効にできます。

$builder->get('yourField')->resetViewTransformers(); 
+0

¡ああ!私はそれを知らなかった。私はその配列の後ろを埋めると定義が気にならないと訴えました...とにかく私はちょうどそのコード行を追加し、完璧に働いていました。ありがとうございました! –