如何创建 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 并且有效。