私はこのクックブックの例と非常によく似たことをしています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(...
動作します
この方法でフィールド イベント サブスクライバーを使用してエンティティ フィールド タイプをフォームに添付することは可能ですか?