2016-11-25 106 views
2

我已經在Laravel框架中開發了很多我的項目了很長一段時間,但是我沒有爲使用Symfony而不是Laravel的公司工作。Symfony中的HTTP路由

在我適應Symfony的路上,我對HTTP路由感到困惑。

在Laravel您指定的HTTP方法並將其鏈接到一個路線,像這樣:

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

如果發送GET請求「/」,它會調用的PageController索引方法。如果您發送了一個發佈請求,它將在PageController中調用聯繫方法。

現在在Symfony我不知道如何做適當的HTTP路由。我看到有人用一種方法處理獲取和發佈請求。例如:

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

    // return something else 
} 

我做了什麼,它看起來很像Laravel方式指定2種獨立的方法來處理每一個請求:

/** 
* @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 
} 

要總結一下我的問題(S):

  1. 如何處理Symfony中的發佈請求?
  2. 處理這些請求的最佳做法是什麼?
  3. 什麼是這種方法的命名約定(indexPost/indexGet,indexAction/contactAction)?

在此先感謝!

+1

這可能幫助:http://symfony.com/doc/current/best_practices/index.html根據我的經驗,最好嘗試做之前,瞭解它自己的條款框架事情就是你習慣做事的方式。開箱即用,Symfony控制器方法通常以Action結束。 – Cerad

+0

感謝您的回覆。我已經閱讀了大部分Symfony文檔,並且找不到任何關於處理帖子的具體內容。 –

+0

該文檔顯示了Symfony處理髮布表單的方式:http://symfony.com/doc/current/forms.html#handling-form-submissions看起來像您實際上已將其複製到您的問題。有些人認爲get/post應該通過單獨的操作來處理。但是,無論喜不喜歡,Symfony的方法都很明確。 – Cerad

回答

1

我會盡力去通過您的每一個問題,

如何處理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 
    } 
} 

什麼是處理這些請求的最佳做法

我認爲創建一個控制器操作來處理每個HTTP請求類型或處理與GET方法相同的POST請求的做法都很好。取決於哪一個最適合您的需求。

這些方法的命名約定是什麼(indexPost/indexGet,indexAction/contactAction)?

在控制器類中的每個動作方法後綴有行動 (再次,這不是必須的,但一些捷徑依靠這一點)。

來源:https://symfony.com/doc/current/controller.html

+0

YAML是大多數Symfony開發人員的方式嗎?還是像我在我的例子中那樣使用註釋?是個人喜好嗎? –

+0

我不知道是否有任何這些可以給你的業績增益,我知道YAML,XML和註釋是流行的,我認爲它大多是個人偏好。 (我通常用YAML來做,因爲它非常清晰imo) – Thomas