Symfony中的HTTP路由

Symfony中的HTTP路由

问题描述:

我已经在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

我会尽力去通过您的每一个问题,

如何处理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