モデルから構築されたコード検証フォームがあります。ユーザーは、定義済みのリスト (エンティティから読み込まれた) から製品を選択し、一意のコードを入力して検証します。これは:
class CodeType extends AbstractType {
public function buildForm(FormBuilder $builder, array $options) {
$builder->add('product', 'entity', array(
'class' => 'CapsaClubCommonBundle:ProductSubFormat',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('p')
->where('p.active=1')
->orderBy('p.id', 'ASC');
},
'property' => 'description',
'required' => true,
'label' => 'Select a product',
'property_path' => false
))
->add('code', 'text', array(
'property_path' => false));
}
public function getName() {
return 'enter_code';
}
}
問題は、ユーザーが一度に複数のコードを検証したい場合に選択肢を追加する必要があるため、最終的にこれを追加することになりました (このガイドに従って):
class CollectionCodeType extends AbstractType {
public function buildForm(FormBuilder $builder, array $options) {
$builder->add('codes', 'collection', array(
'type' => new CodeType(),
'allow_add' => true,
'prototype' => true,
'by_reference' => false,
'property_path' => false
));
}
public function getName() {
return 'collection_code';
}
}
そして、コントローラー$form = $this->createForm(new CollectionCodeType());で呼び出しますが、機能していません。エラーはありません。単にフォームが表示されません。
モデルからの構築が正しいかどうかわからないため、これをどのように行うべきかわかりませんが、この場合、必要なものを達成する方法は他にないと思います。
どうもありがとう。
編集: フォームのレンダリング: http://pastebin.com/aSrUx67N