Поиск…


Вступление

Маршрутизация - это процесс сопоставления URL-адреса контроллеру . У Symfony есть мощный компонент маршрутизации, который позволяет вам определять маршруты.

Компонент Routing поддерживает ряд форматов конфигурации: аннотации, YAML, XML и raw 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 будет обрабатываться listAction() способом по BlogController внутри AppBundle .

Маршруты с заполнителями

Использование 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)
    {
        // ...
    }
}

Любой запрос с соответствующей URL - /blog/* будет обрабатываться showAction() способом по BlogController в AppBundle . Действие контроллера будет принимать значение заполнителя в качестве аргумента метода.

Например, запрос /blog/my-post вызовет вызов showAction() с аргументом $slug содержащим значение my-post . Используя этот аргумент, действие контроллера может изменить ответ в зависимости от значения заполнителя, например, путем извлечения сообщения в блоге с помощью 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)
    {
        // ...
    }
}

В этом примере URL-адреса /blog и /blog/1 будут соответствовать маршруту 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