@@ -815,10 +815,10 @@ Adding HTTP Method Requirements
815815~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
816816
817817In addition to the URL, you can also match on the *method * of the incoming
818- request (i.e. GET, HEAD, POST, PUT, DELETE). Suppose youhave a contact form
819- with two controllers - one for displayingthe form (on a GETrequest) and one
820- for processing the form when it's submitted (on aPOST request). This can
821- be accomplished with the following route configuration:
818+ request (i.e. GET, HEAD, POST, PUT, DELETE). Suppose youcreate an API for
819+ your blog and you have 2 routes: One for displayinga post (on a GETor HEAD
820+ request) and one for updating a post (on aPUT request). This can be
821+ accomplished with the following route configuration:
822822
823823..configuration-block ::
824824
@@ -830,39 +830,39 @@ be accomplished with the following route configuration:
830830 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
831831 // ...
832832
833- classMainController extends Controller
833+ classBlogApiController extends Controller
834834 {
835835 /**
836- * @Route("/news ")
837- * @Method("GET")
836+ * @Route("/api/posts/{id} ")
837+ * @Method({ "GET","HEAD"} )
838838 */
839- public functionnewsAction( )
839+ public functionshowAction($id )
840840 {
841- // ...display your news
841+ // ...return a JSON response with the post
842842 }
843843
844844 /**
845- * @Route("/contact ")
846- * @Method({"GET", "POST"} )
845+ * @Route("/api/posts/{id} ")
846+ * @Method("PUT" )
847847 */
848- public functioncontactFormAction( )
848+ public functioneditAction($id )
849849 {
850- // ...display and process a contact form
850+ // ...edit a post
851851 }
852852 }
853853
854854 ..code-block ::yaml
855855
856856# app/config/routing.yml
857- news :
858- path :/news
859- defaults :{ _controller: AppBundle:Main:news }
860- methods :[GET]
857+ api_show_post :
858+ path :/api/posts/{id}
859+ defaults :{ _controller: AppBundle:BlogApi:show }
860+ methods :[GET, HEAD ]
861861
862- contact_form :
863- path :/contact
864- defaults :{ _controller: AppBundle:Main:contactForm }
865- methods :[GET, POST ]
862+ api_edit_post :
863+ path :/api/posts/{id}
864+ defaults :{ _controller: AppBundle:BlogApi:edit }
865+ methods :[PUT ]
866866
867867 ..code-block ::xml
868868
@@ -873,12 +873,12 @@ be accomplished with the following route configuration:
873873xsi : schemaLocation =" http://symfony.com/schema/routing
874874 http://symfony.com/schema/routing/routing-1.0.xsd" >
875875
876- <route id =" news " path =" /news " methods =" GET" >
877- <default key =" _controller" >AppBundle:Main:news </default >
876+ <route id =" api_show_post " path =" /api/posts/{id} " methods =" GET|HEAD " >
877+ <default key =" _controller" >AppBundle:BlogApi:show </default >
878878 </route >
879879
880- <route id =" contact_form " path =" /contact " methods =" GET|POST " >
881- <default key =" _controller" >AppBundle:Main:contactForm </default >
880+ <route id =" api_edit_post " path =" /api/posts/{id} " methods =" PUT " >
881+ <default key =" _controller" >AppBundle:BlogApi:edit </default >
882882 </route >
883883 </routes >
884884
@@ -889,24 +889,25 @@ be accomplished with the following route configuration:
889889 use Symfony\Component\Routing\Route;
890890
891891 $collection = new RouteCollection();
892- $collection->add('news ', new Route('/news ', array(
893- '_controller' => 'AppBundle:Main:contact ',
894- ), array(), array(), '', array(), array('GET')));
892+ $collection->add('api_show_post ', new Route('/api/posts/{id} ', array(
893+ '_controller' => 'AppBundle:BlogApi:show ',
894+ ), array(), array(), '', array(), array('GET', 'HEAD' )));
895895
896- $collection->add('contact_form ', new Route('/contact ', array(
897- '_controller' => 'AppBundle:Main:contactForm ',
898- ), array(), array(), '', array(), array('GET', 'POST ')));
896+ $collection->add('api_edit_post ', new Route('/api/posts/{id} ', array(
897+ '_controller' => 'AppBundle:BlogApi:edit ',
898+ ), array(), array(), '', array(), array('PUT ')));
899899
900900 return $collection;
901901
902902 ..versionadded ::2.2
903903 The ``methods `` option was introduced in Symfony 2.2. Use the ``_method ``
904904 requirement in older versions.
905905
906- Despite the fact that these two routes have identical paths (``/contact ``),
907- the first route will match only GET requests and the second route will match
908- only POST requests. This means that you can display the form and submit the
909- form via the same URL, while using distinct controllers for the two actions.
906+ Despite the fact that these two routes have identical paths
907+ (``/api/posts/{id} ``), the first route will match only GET or HEAD requests and
908+ the second route will match only PUT requests. This means that you can display
909+ and edit the post with the same URL, while using distinct controllers for the
910+ two actions.
910911
911912..note ::
912913