我正在做一些与这个食谱示例非常相似的事情http://symfony.com/doc/current/cookbook/form/dynamic_form_generation.html#adding-an-event-subscriber-to-a-form-class
主要区别在于我的字段类型是实体而不是文本类型。
所以我的字段订阅者 preSetData 方法如下所示:
public function preSetData(DataEvent $event)
{
$data = $event->getData();
$form = $event->getForm();
if (null === $data) {
return;
}
if(!$data->getIsCategorized()){
$form->add(
$this->factory->createNamed('categories', 'entity', array(
'class' => 'My\PostBundle\Entity\Category',
'property' => 'name',
'multiple' => true,
'label' => 'Category'
)
)
);
}
}
这给出了以下错误
Class does not exist
500 Internal Server Error - ReflectionException
如果我直接在我的表单类型中添加实体,$builder->add('categories, 'entity', array(...
它可以正常工作
是否可以以这种方式使用字段事件订阅者将实体字段类型附加到表单?