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):
- 如何处理Symfony中的发布请求?
- 处理这些请求的最佳做法是什么?
- 什么是这种方法的命名约定(indexPost/indexGet,indexAction/contactAction)?
在此先感谢!
我会尽力去通过您的每一个问题,
如何处理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)?
在控制器类中的每个动作方法后缀有行动 (再次,这不是必须的,但一些捷径依靠这一点)。
YAML是大多数Symfony开发人员的方式吗?还是像我在我的例子中那样使用注释?是个人喜好吗? –
我不知道是否有任何这些可以给你的业绩增益,我知道YAML,XML和注释是流行的,我认为它大多是个人偏好。 (我通常用YAML来做,因为它非常清晰imo) – Thomas
这可能帮助:http://symfony.com/doc/current/best_practices/index.html根据我的经验,最好尝试做之前,了解它自己的条款框架事情就是你习惯做事的方式。开箱即用,Symfony控制器方法通常以Action结束。 – Cerad
感谢您的回复。我已经阅读了大部分Symfony文档,并且找不到任何关于处理帖子的具体内容。 –
该文档显示了Symfony处理发布表单的方式:http://symfony.com/doc/current/forms.html#handling-form-submissions看起来像您实际上已将其复制到您的问题。有些人认为get/post应该通过单独的操作来处理。但是,无论喜不喜欢,Symfony的方法都很明确。 – Cerad