Динамический CollectionType с полями, не являющимися объектами - PullRequest
0 голосов
/ 13 марта 2012

У меня есть форма для проверки кода, построенная из модели. Пользователь выбирает продукт из предопределенного списка (загруженного из объекта) и вводит свой уникальный код для его проверки. Это:

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

...