如何创建 2 个具有相同路径但不同 http 方法的操作 Symfony2
How to create 2 actions with same path but different http methods Symfony2
我使用 symfony 路由注释,我已经将 http_method_override
设置为 true
我想根据 http 方法创建两个不同的操作,但行为不同:
/**
* Event controller.
*
* @Route("/event")
*/
class EventController extends Controller
{
/**
* Lists all Event entities.
*
* @Route("/", name="event")
* @Method("GET")
* @Template() // default template (index.html.twig)
*/
public function indexAction()
{
...
}
/**
* Creates a new Event entity.
*
* @Route("/", name="event_create")
* @Method("POST")
* @Template("...") // a special template new.html.twig
*/
public function createAction(Request $request)
{
...
}
但是当我尝试访问 /event/ 时,有一个 405 页面说:
No route found for "GET /event/": Method Not Allowed (Allow: POST)
当我尝试使用 php app/console router:debug
列出我的路线时:
event_create POST ANY ANY /event/
event GET ANY ANY /event/week/{timestamp}
event_new GET ANY ANY /event/new
event_show GET ANY ANY /event/{id}
event_edit GET ANY ANY /event/{id}/edit
event_update PUT ANY ANY /event/{id}
event_delete DELETE ANY ANY /event/{id}
抱歉,我刚刚在阅读我的问题时意识到 下面的另一种方法 路径为 /event/week/{timestamp} 也被命名为 "event" :/
所以我将此方法重命名为 event_week 并且有效。
我使用 symfony 路由注释,我已经将 http_method_override
设置为 true
我想根据 http 方法创建两个不同的操作,但行为不同:
/**
* Event controller.
*
* @Route("/event")
*/
class EventController extends Controller
{
/**
* Lists all Event entities.
*
* @Route("/", name="event")
* @Method("GET")
* @Template() // default template (index.html.twig)
*/
public function indexAction()
{
...
}
/**
* Creates a new Event entity.
*
* @Route("/", name="event_create")
* @Method("POST")
* @Template("...") // a special template new.html.twig
*/
public function createAction(Request $request)
{
...
}
但是当我尝试访问 /event/ 时,有一个 405 页面说:
No route found for "GET /event/": Method Not Allowed (Allow: POST)
当我尝试使用 php app/console router:debug
列出我的路线时:
event_create POST ANY ANY /event/
event GET ANY ANY /event/week/{timestamp}
event_new GET ANY ANY /event/new
event_show GET ANY ANY /event/{id}
event_edit GET ANY ANY /event/{id}/edit
event_update PUT ANY ANY /event/{id}
event_delete DELETE ANY ANY /event/{id}
抱歉,我刚刚在阅读我的问题时意识到 下面的另一种方法 路径为 /event/week/{timestamp} 也被命名为 "event" :/
所以我将此方法重命名为 event_week 并且有效。