Параметры в URL
Указать параметры в URL можно через код ниже:
# src/Controller/PostsController.php class PostsController extends AbstractController { /** @Route("/posts/{id}") **/ public function view($id) { return $this->render('posts/view.html.twig'); } }
Имена параметров, указанные внутри @Route()
и function()
должны совпадать, иначе будет ошибка «RuntimeException: Could not resolve argument».
/** @Route("/posts/{id}") **/ public function view($slug) { // Ошибка: Не получается найти аргумент $slug }
Можно указать тип параметра (например число или строка), который должен быть передан в URL. Если в указанном параметре можно передавать только числа, то надо указать значение int
.
# в качестве $id можно передавать только числа /** @Route("/posts/{id}, requirements={"id"="\d+"}") **/ public function view(int $id) { // код }
В параметре requirements
строка «\d» означает, что в $id могут быть только числа. А знак «+» означает, что чисел может быть любое количество. Данный синтаксис называется «регулярные выражения».
Группа параметров
Перед созданием класса можно указать раздел, например «/posts». И все странцы в текущем контроллере будут находится внутри данного раздела.
# src/Controller/PostsController.php /** * @Route("/posts") */ class PostsController extends AbstractController { /** @Route("/") **/ public function index() { // страница «/posts/» } /** @Route("/{id}") **/ public function view($id) { // страница «/posts/17» } }
Авторизуйтесь, чтобы добавлять комментарии