0

私のコントローラーには、次のものがあります。

$form = $this->createForm(new ResetPassword());

ResetPassword は、いくつかのフィールドをそのまま追加するために使用している独自の buildForm() メソッドを持つ AbstractType クラスです。

私のコントローラーでは、フォームを表示する前にフォームに別のフィールドを追加できるようにしたいと考えています。

これが私が試していることです:

$form = $this->createForm(new ResetPassword())->add('test');

これにより、エラーが発生します。

Catchable Fatal Error: Argument 1 passed to Symfony\Component\Form\Form::add() must implement interface Symfony\Component\Form\FormInterface, string given
4

1 に答える 1

3

クリーンな MVC 構造で作業を続けることができる、はるかに優れたアプローチがあります。したがって、「フォームイベント」を使用してフォームを動的に生成することをお勧めします。

たとえば、フォームにイベント サブスクライバーを追加することで、フィールドの作成をそのサブスクライバーに委任します。次に、「EventType」に従って、サブスクライバー内に必要なフィールドを追加できます。

フォーム クラスへのイベント サブスクライバーの追加

フォーム イベントを使用してフォームを動的に生成する方法

于 2012-11-12T16:35:30.307 に答える