3

routing.yml で同じルートに対してGETPOSTの両方のメソッドを宣言したいと考えています。

ドキュメントによると、次のような注釈で可能です。

/**
 * @Route("/edit/{id}")
 * @Method({"GET", "POST"})
 */

しかし、どうやってYAMLに? 私はさまざまなことを試しました:

contact_envoi:
    pattern:  /contact-envoi
    defaults: { _controller: AcmeDemoBundle:Default:contactEnvoi }
    requirements:
        sf_method: ['get','post']

...
    requirements:
        _method: { 'GET', 'POST' }

しかし、それでも機能しません...助けてください、それに関するドキュメントには何も見つかりませんでした。

4

3 に答える 3

7

Touki さんのコメントに感謝します。

Symfony 2.1 の場合はこちら、Symfony 2.2の場合はこちらで説明されているように、2 つの別々の共有で同じ URL を 2 回宣言し、それぞれに独自の方法を使用する必要がありました。

contact:
    path:     /contact
    defaults: { _controller: AcmeDemoBundle:Main:contact }
    methods:  [GET]

contact_process:
    path:     /contact
    defaults: { _controller: AcmeDemoBundle:Main:contactProcess }
    methods:  [POST]
于 2014-04-09T10:02:02.283 に答える
5

GET メソッドと POST メソッドで同じルートを取得できます。

contact:
path:     /contact
defaults: { _controller: AcmeDemoBundle:Main:contact }
methods:  ['GET','POST']

次に、使用するメソッドをコントローラーで管理します。

public function contactAction(Request $request)
{
    if ('POST' === $request->getMethod()) {
        ..
    }
}
于 2014-04-09T15:16:43.457 に答える
4

メソッドを削除するだけです

contact:
  path:     /contact
  defaults: { _controller: AcmeDemoBundle:Main:contact }
于 2014-04-09T16:15:01.183 に答える