0

「オブジェクト以外でメンバー関数 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 を持つ理由です。これが目標を少し明確にすることを願っています。

4

1 に答える 1