Szukaj…
Wprowadzenie
Routing to proces mapowania adresu URL do kontrolera . Symfony ma potężny komponent Routing, który pozwala definiować trasy.
Komponent Routing obsługuje wiele formatów konfiguracji: adnotacje, YAML, XML i surowy PHP.
Parametry
Parametr | Detale |
---|---|
Nazwa | Nazwa trasy. Przykład: book_show |
ścieżka | Ścieżka (może zawierać symbole wieloznaczne). Przykład: /book/{isbn} |
domyślne | Domyślne wartości parametrów |
Proste trasy
Korzystanie z YAML:
# app/config/routing.yml
blog_list:
path: /blog
defaults: { _controller: AppBundle:Blog:list }
Korzystanie z adnotacji:
// 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()
{
// ...
}
}
Żądanie adresu URL /blog
zostanie obsłużone przez metodę BlogController
listAction()
BlogController
w AppBundle
.
Trasy z symbolami zastępczymi
Korzystanie z YAML:
# app/config/routing.yml
blog_show:
path: /blog/{slug}
defaults: { _controller: AppBundle:Blog:show }
Korzystanie z adnotacji:
// 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)
{
// ...
}
}
Każde żądanie z dopasowanym adresem URL /blog/*
będzie obsługiwane przez showAction()
BlogController
w AppBundle
. Działanie kontrolera otrzyma wartość symbolu zastępczego jako argument metody.
Na przykład żądanie /blog/my-post
spowoduje wywołanie showAction()
z argumentem $slug
zawierającym wartość my-post
. Za pomocą tego argumentu akcja kontrolera może zmienić odpowiedź w zależności od wartości symbolu zastępczego, na przykład poprzez pobranie posta blogu z informacją o ślimaku my-post
z bazy danych.
Wartości domyślne dla symboli zastępczych
Jeśli chcesz mieć symbol zastępczy, który może zostać pominięty, możesz nadać mu wartość domyślną:
Korzystanie z YAML:
# app/config/routing.yml
blog_list:
path: /blog/{page}
defaults: { _controller: AppBundle:Blog:list, page: 1 }
requirements:
page: '\d+'
Korzystanie z adnotacji:
// 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)
{
// ...
}
}
W tym przykładzie zarówno adresy URL /blog
i /blog/1
będą zgodne z trasą blog_list
i będą obsługiwane przez metodę listAction()
. W przypadku /blog
, listAction()
nadal otrzyma argument $page
o wartości domyślnej 1
.