3

Symfony2 で REST API を設計しています。

POST および PUT リクエストでは、FormType を使用しています。何かのようなもの :

class EmailType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('subject', 'textarea')
        [...]
        ;
    }

    public function getName()
    {
        return 'email';
    }
}

しかし、投稿するときは、次のような名前空間を持つフィールドを渡す必要があります。

{
    "email": {
        "subject": "subject"
    }
}

しかし、この最上位の名前空間は必要ありません。

何か案は ?

4

2 に答える 2

7

フォーム タイプとしてタグ付けされたサービスとして登録する場合、何らかの方法でそれを参照する必要があるため、フォーム タイプには名前が必要です。次のコード スニペットで、emailはフォーム タイプの名前です。

$form = $this->formFactory->create('email', $email);

そのため、フォーム タイプ クラスで名前を返す必要があります。

public function getName()
{
    return 'email';
}

したがって、名前のないフォーム タイプを作成する代わりに、空の名前でフォーム (そのフォームタイプの特定のインスタンス) を作成するだけです。

$form = $this->formFactory->createNamed(null, 'email', $email);

''代わりに空の文字列 — —nullも機能します。

于 2013-10-15T11:07:52.830 に答える
-3

JSON ベースの API には Symfony フォームを使用しました。getName()メソッドを returnに変更するだけです'':

public function getName()
{
    return '';
}

これを FOSRestBundle と組み合わせることで、POSTされたデータの操作が非常に簡単になりました。

于 2013-09-03T13:24:20.867 に答える