如何创建具有相同路径但不同的http方法Symfony2的2个动作

时间:2015-02-04 16:43:16

标签: php symfony routing http-method

我使用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 /"的路线:不允许的方法(允许: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} 

1 个答案:

答案 0 :(得分:1)

对不起,我刚刚意识到我的问题下面的其他方法,其中路径/事件/周/ {timestamp} 也被命名为“event”:/

所以我将此方法重命名为event_week并且它有效。