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 .