「オブジェクト以外でメンバー関数 getAgent() を呼び出します」というエラーが表示されます。
AgentsType.php の私のコードは次のとおりです。
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('agents', 'entity', array(
'class' => 'MyBundle:agents',
'property' => 'name',));
$formModifier = function(FormInterface $form, agents $agent) {
$description = $agent->getDescription();
$form->add('description', 'text');
};
$builder->addEventListener(
FormEvents::PRE_SET_DATA,
function(FormEvent $event) use ($formModifier) {
$data = $event->getData(); //ERROR HERE, returns NULL
$formModifier($event->getForm(), $data->getAgent()); // Exception HERE
}
);
$builder->get('agents')->addEventListener(
FormEvents::POST_SUBMIT,
function(FormEvent $event) use ($formModifier) {
$agent = $event->getForm()->getData();
$formModifier($event->getForm()->getParent(), $agent);
}
);
}
$event->getData(); は NULL です。$event を var_dumped しましたが、非常に大量のオブジェクトです。
目的は、選択フィールド (この場合は説明フィールド) でエージェント エンティティを選択した後、動的にフォームを生成することです。
このエラーをどうするか、または getData() = NULL の理由を教えてください。
編集:
これの主な目的は、ユーザーがエージェントを追加/無効化/更新できるようにすることです。主なアイデアは、選択フィールドまたはドロップダウン フィールドと [エージェントの追加] ボタンのみを表示することです。ユーザーが選択フィールドから 1 つの名前を選択すると、エージェント エンティティのフォームにそのデータが入力されます。これが、選択フィールドでの選択を検出し、ユーザーの選択に従ってデータを表示する EventListener を持つ理由です。これが目標を少し明確にすることを願っています。