Я знаю, что есть дискуссии о том, какие лучшие методы обработки маршрутов в Symfony2 (routing.yml vs annotations). Просто позвольте мне упомянуть, что я хочу сохранить это, используя аннотации.Как использовать несколько аннотаций метода для определенных маршрутов?
Когда я определить несколько маршрутов для одного действия в контроллере, кажется, что последнее определение @Method
аннотации отменяет все остальные, и вот почему я получаю следующее сообщение об ошибке:
No route found for "POST /index": Method Not Allowed (Allow: GET, HEAD)
Это всего лишь короткий фрагмент кода, который я использую.
namespace MySelf\MyBundle\Controller;
use Symfony\Component\HttpFoundation\Response;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
class MyController extends Controller{
/**
* @Route(
* "/index",
* name="index_default"
*)
* @Method({"GET", "POST"})
*
* @Route(
* "/index/{id}",
* name="index",
* requirements={
* "id": "\d+"
* }
*)
* @Method({"GET"})
*
* @return Response
*/
public function indexAction($id = null){
/*DO SOME FANCY STUFF*/
...
return $response;
}
}
В настоящее время это работает очень хорошо!
index_default:
pattern: /index
defaults: { _controller: MyBundle:MyController:index }
requirements:
_method: GET|POST
index:
pattern: /index/{id}
defaults: { _controller: MyBundle:MyController:index }
requirements:
_method: GET
id: \d+
Любая идея реализовать его так, как она работает с routing.yml вместо использования аннотаций?
Попробуйте указать метод в маршруте аннотации непосредственно (методы = «GET | POST») – rpg600
Спасибо, что делает именно то, что я надеялся получить :) Просто отправить его как отдельный ответ, так что я могу поставить галочку это :) – nTOXIC