如何创建 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 页面说:

找不到"GET/event/"的路由:方法不允许(允许:开机自检)

当我尝试列出我的路线时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 并且它有效。