'model'(Symfony Propel BridgeのModelType)フォームタイプの選択された値を設定しようとしていますが、惨めに失敗しています。
次の構造のProductテーブルがあります。
id, name, category_id
データの例は次のとおりです。
id => 1, name => 'Test', category_id => 3
別のテーブルはCategoryデータを保持しているため、category_idは外部キーです。
id => 1, name => 'Category 1'
id => 2, name => 'Category 2'
id => 3, name => 'Category 3'
私が使用しているフォームタイプは次のとおりです。
$builder->add('category_id', 'model', array(
'class' => 'Foo\BarBundle\Model\Category',
'required' => true,
'multiple' => false,
'expanded' => false,
'label' => 'Pick a product category!',
'query' => CategoryQuery::create()->orderByName(),
));
フォームをロードすると、期待どおりに、順序付けられたカテゴリを含む適切な選択ドロップダウンが表示されます。
ドロップダウンで実行したいのは、既存の製品の正しい「選択された」カテゴリを表示することです(ユースケース:製品編集フォーム)。したがって、製品ID 1には、「カテゴリ3」のオプションが選択されています。
「データ」オプション(無視された)を設定しようとしたので、なぜこれほど基本的なことが非常に難しいように見えるのか、私は困惑しています。
どんな助けでも大歓迎です。
更新:問題は解決しました。以下を参照してください。
$builder->add('category', 'model', array(
'class' => 'Foo\BarBundle\Model\Category',
'required' => true,
'multiple' => false,
'expanded' => false,
'label' => 'Pick a product category!',
'query' => CategoryQuery::create()->orderByName(),
));
'category_id'を'category'に変更し、すべてがもう一度世界に正しかった。