У меня есть форма для проверки кода, построенная из модели. Пользователь выбирает продукт из предопределенного списка (загруженного из объекта) и вводит свой уникальный код для его проверки. Это:
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());
, но не работает. Без ошибок, просто не отображается форма.
Я не знаю, как это должно быть сделано, потому что я не уверен, правильно ли строить из модели, но в этом случае я думаю, что нет другого способа достичь того, что мне нужно.
Большое спасибо.
EDIT:
Визуализация формы: http://pastebin.com/aSrUx67N