2016-11-25 39 views
2

私はLaravelフレームワークで多くのプロジェクトを開発していましたが、LaravelではなくSymfonyを使用している会社で働いているわけではありません。symfonyのHTTPルーティング

私のやり方では、私はSymfonyに適応してHTTPルーティングと混同しています。

Laravelでは、HTTPメソッドを指定し、そのように、ルートにリンク:

Route::get('/', '[email protected]'); 
Route::post('/', '[email protected]'); 

をあなたは「/」、それはPageControllerでのインデックスメソッドを呼び出しますにGETリクエストを送信した場合。投稿要求を送信すると、PageControllerの連絡先メソッドが呼び出されます。

Symfonyでは、適切なHTTPルーティングを行う方法がわかりません。私は、人が1つの方法でリクエストを取得し、ポストするのを見てきました。たとえば、次のように

/** 
* @Route("/", name="homepage") 
* @Method("GET") 
*/ 
public function indexAction(Request $request) 
{ 
    // return the index page 
} 

/** 
* @Route("/", name="contact") 
* @Method("POST") 
*/ 
public function contactAction() 
{ 
    // handle post request and return something 
} 

は私の質問(複数可)を要約すると::

私は各要求を処理するために2つの別々の方法を指定されたLaravelの方法によく似ている、やった

public function index() 
{ 
    if ($request->isMethod('POST')) { 
     // handle post request and return something 
    } 

    // return something else 
} 

  1. Symfonyで投稿要求を処理するにはどうすればよいですか?
  2. これらの要求を処理するためのベストプラクティスは何ですか?
  3. このようなメソッド(indexPost/indexGet、indexAction/contactAction)の命名規則とは何ですか?

ありがとうございます! YMLルートと

+1

これは役立つかもしれない:http://symfony.com/doc/current/best_practices/index.html私の経験では、それが何をしようとする前に、それ自身の用語の枠組みを理解するのが最善ですあなたが物事をするのに慣れている方法。また、Symfonyのコントローラーメソッドは一般にアクションで終了します。 – Cerad

+0

お返事ありがとうございます。私は既にSymfonyのドキュメントのほとんどを読んできましたが、投稿の扱いについては何も特定できませんでした。 –

+0

docsは、公開されたフォームを扱うSymfonyの方法を示しています:http://symfony.com/doc/current/forms.html#handling-form-submissions実際にこれをあなたの質問にコピーしたようです。取得/投稿を別々の操作で処理する必要があると言う人がいます。しかし、そうであってもそうでなくても、Symfonyのアプローチは明らかです。 – Cerad

答えて

1

I symfonyのでPOSTリクエストを処理する方法

、ご質問のそれぞれを通過しようとするでしょう

my_route_post: 
    path:  /route/path 
    defaults: { _controller: AppBundle:Foo:edit } 
    methods: [POST] 
my_route_get: 
    path:  /route/path 
    defaults: { _controller: AppBundle:Foo:show } 
    methods: [GET] 

そして、あなたはコントローラを定義することができます行動:

class FooController extends Controller { 

    public function editAction(Request $request) 
    { 
     // POST request here 
    } 

    public function showAction() 
    { 
     // GET request here 
    } 
} 

これらの要求を処理するベストプラクティスは何ですか

GETと同じ方法で各HTTP要求の種類を処理したり、POST要求を処理するコントローラアクションを作成する方法はどちらも良いと思います。あなたのニーズに最も適したものに応じて最適です。

このようなメソッド(indexPost/indexGet、indexAction/contactAction)の命名規則は何ですか?

コントローラクラスの各アクションメソッドがアクション 接尾辞れる(再び、これは必須ではありませんが、いくつかのショートカットがこれに依存しています)。

から:https://symfony.com/doc/current/controller.html

+0

YAMLはSymfonyの開発者が行っている方法ですか?あるいは、私の例のようにアノテーションを使用していますか?それは個人的な好みですか? –

+0

パフォーマンスの向上をもたらすものがあるかどうかわかりませんが、YAML、XML、注釈が一般的であることは分かっていますが、主に個人的な好みだと思います。 (私は通常、YAMLでそれを行います。なぜなら、それは非常に明確ですからです) – Thomas

関連する問題