Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit30c2750

Browse files
committed
Update method requirement example
1 parent9960f9c commit30c2750

File tree

1 file changed

+36
-35
lines changed

1 file changed

+36
-35
lines changed

‎book/routing.rst‎

Lines changed: 36 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -815,10 +815,10 @@ Adding HTTP Method Requirements
815815
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
816816

817817
In 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 - onefor displayingthe form (on a GETrequest) and one
820-
for processing the form when it's submitted (on aPOST request). This can
821-
beaccomplished 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: Onefor 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:
873873
xsi:schemaLocation="http://symfony.com/schema/routing
874874
http://symfony.com/schema/routing/routing-1.0.xsd">
875875
876-
<routeid="news"path="/news"methods="GET">
877-
<defaultkey="_controller">AppBundle:Main:news</default>
876+
<routeid="api_show_post"path="/api/posts/{id}"methods="GET|HEAD">
877+
<defaultkey="_controller">AppBundle:BlogApi:show</default>
878878
</route>
879879
880-
<routeid="contact_form"path="/contact"methods="GET|POST">
881-
<defaultkey="_controller">AppBundle:Main:contactForm</default>
880+
<routeid="api_edit_post"path="/api/posts/{id}"methods="PUT">
881+
<defaultkey="_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

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp