【发布时间】:2016-11-25 17:40:35
【问题描述】:
我已经在 Laravel 框架中开发很多项目已经有一段时间了,但我不是在为一家使用 Symfony 而不是 Laravel 的公司工作。
在适应 Symfony 的过程中,我对 HTTP 路由感到困惑。
在 Laravel 中,您指定 HTTP 方法并将其链接到路由,如下所示:
Route::get('/', 'PageController@index');
Route::post('/', 'PageController@contact');
如果你向'/'发送一个get请求,它会调用PageController中的index方法。如果您发送一个 post 请求,它将调用 PageController 中的联系方法。
现在在 Symfony 中,我不知道如何进行正确的 HTTP 路由。我见过人们用一种方法同时处理 get 和 post 请求。例如:
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
}
总结我的问题:
- 如何在 Symfony 中处理 post 请求?
- 处理这些请求的最佳做法是什么?
- 此类方法(indexPost/indexGet、indexAction/contactAction)的命名约定是什么?
提前致谢!
【问题讨论】:
-
这可能会有所帮助:symfony.com/doc/current/best_practices/index.html 根据我的经验,最好先按照自己的方式理解框架,然后再尝试按照您习惯的方式做事。开箱即用,Symfony 控制器方法通常以 Action 结束。
-
感谢您的回复。我已经阅读了大部分 Symfony 文档,但找不到任何关于处理帖子的具体内容。
-
文档展示了 Symfony 处理已发布表单的方式:symfony.com/doc/current/forms.html#handling-form-submissions 似乎您实际上将其复制到了您的问题中。有些人说 get/post 应该由单独的操作来处理。但是,不管你喜不喜欢,Symfony 的方法很明确。