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 .



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow