サーチ…
前書き
ルーティングとは、URLをコントローラにマッピングするプロセスです。 symfonyにはルーティングを定義する強力なルーティングコンポーネントがあります。
Routingコンポーネントは、注釈、YAML、XML、および生のPHPなど、さまざまな設定フォーマットをサポートしています。
パラメーター
パラメータ | 詳細 |
---|---|
名 | ルートの名前。例: book_show |
パス | パス(ワイルドカードを含む場合があります)。例: /book/{isbn} |
デフォルト | パラメータのデフォルト値 |
シンプルルート
YAMLを使う:
# app/config/routing.yml
blog_list:
path: /blog
defaults: { _controller: AppBundle:Blog:list }
注釈の使用:
// src/AppBundle/Controller/BlogController.php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
class BlogController extends Controller
{
/**
* @Route("/blog", name="blog_list")
*/
public function listAction()
{
// ...
}
}
/blog
URLのリクエストは、 BlogController
内のAppBundle
listAction()
メソッドによって処理されます。
プレースホルダを使用したルート
YAMLを使う:
# app/config/routing.yml
blog_show:
path: /blog/{slug}
defaults: { _controller: AppBundle:Blog:show }
注釈の使用:
// src/AppBundle/Controller/BlogController.php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
class BlogController extends Controller
{
/**
* @Route("/blog/{slug}", name="blog_show")
*/
public function showAction($slug)
{
// ...
}
}
/blog/*
と一致するURLを持つリクエストは、 BlogController
内のAppBundle
showAction()
メソッドによって処理されます。コントローラアクションは、メソッドの引数としてプレースホルダの値を受け取ります。
たとえば、 /blog/my-post
リクエストは、値my-post
を含む引数$slug
を使用してshowAction()
を呼び出します。コントローラのアクションは、その引数を使用して、たとえばデータベースからslug my-post
してブログ投稿を取得するなど、プレースホルダの値に応じてレスポンスを変更できます。
プレースホルダのデフォルト値
省略可能なプレースホルダを使用する場合は、デフォルト値を与えることができます。
YAMLを使う:
# app/config/routing.yml
blog_list:
path: /blog/{page}
defaults: { _controller: AppBundle:Blog:list, page: 1 }
requirements:
page: '\d+'
注釈の使用:
// src/AppBundle/Controller/BlogController.php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
class BlogController extends Controller
{
/**
* @Route("/blog/{page}", name="blog_list", requirements={"page": "\d+"})
*/
public function listAction($page = 1)
{
// ...
}
}
この例では、 /blog
と/blog/1
両方のURLがblog_list
ルートと一致し、 listAction()
メソッドによって処理されます。 /blog
の場合、 listAction()
は$page
引数を受け取り、デフォルト値は1
です。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow