0

ユーザーは、抽象型のsymfony2フレームワークを使用して構築されたフォームをsumbitします。

<?php
$form = $this->createForm(new MyAbstractType(), new MyEntity());

アクションでこのPOSTリクエストを受け取ります:

public function receiveFormRequestAction(Request $request){
    //How do I get the abstract type from the request?
}

リクエスト内の情報のみを使用して、フォームで使用されるAbstractTypeを作成できる必要があります。

  1. 出来ますか?
  2. どうしますか?

ありがとう。

編集:

はっきりしていなかったらごめんなさい。メソッド「recieveFormRequestAction」では、取得する抽象型がわからないため、フォームをMyAbstractTypeに直接バインドすることはできません。

このアクションは、理論的には、任意のAbastractTypeを受け取り、それをバインドできます。

4

3 に答える 3

1
  1. はい

  2. このような:

    // first, create the very same form
    $form = $this->createForm(new MyAbstractType(), new MyEntity());
    // bind the form with your request
    $form->bind($request);
    // Optional step : validate the form
    if ($form->isValid()) {
        // your object is ready, get it like this:
        $object = $form->getData();
    } else {
         // handle the validation errors.
    }
    
于 2012-10-19T11:50:22.707 に答える
0

Requestオブジェクトをフォームにバインドする必要があります。

$form->bind($request);

$form->isValid()次に、やのようなものを実行できます$form->getData()

于 2012-10-19T11:51:35.613 に答える
0

私はこれをすることになった:

  1. フォームのgetName()メソッドは、Formクラス名とまったく同じ名前を返しました。

    Class MyAbstractType extends AbstractType
      [...]
      public function getName(){
        return "MyAbstractType";
    }
    
  2. これで、パラメータキーのハッシュを使用してタイプを取得できます

    public function myAction(Request $request){
    $parameterKeys = $request->request->keys();
    $formName = $parameterKeys[0];
    

地獄のように醜いですが、私は迅速な解決策が必要でした。よりきれいなものができるまで、私はこれを受け入れています。

于 2012-11-17T03:58:59.327 に答える