symfony 2 — Routing
Symfony 1 и 2 позволяет организовать управление URL.
Генерируемые УРЛы могут быть дастаточно сложными, так же возможно отлаживать (Debug) пути.
Давайте самый простой вариант:
Допустим у Нас есть новый бандл RecordBundle:Record:show.
Допустим нам нужно открывать страницы /record/my-post или /record/all-about-symfony.
# app/config/routing.yml record_show: pattern: /record/{id} defaults: { _controller: RecordBundle:Record:show }
У Symfony 2 для обеспечения /record/{id} нужно внести данные в _controller.
// RecordBundle:Record:show // src/Record/RecordBundle/Controller/RecordController.php namespace Record\RecordBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; class RecordController extends Controller { public function showAction($id) { $blog = // use the $id varible to query the database return $this->render('RecordBundle:Record:show.html.twig', array( '$id' => $id, )); } }
Давайте сложнее пример, когда в УРЛе будет несколько переменных.
Допустим нам нужно как в обычном блоге записать УРЛ /articles/{lang}/{year}/{title}.{_format}.
article_show: pattern: /articles/{lang}/{year}/{title}.{_format} defaults: { _controller: AcmeDemoBundle:Article:show, _format: html } requirements: lang: en|fr|ru|ua _format: html|rss year: \d+
Как Вы понимаете переменные lang, year, title, format никак между собой нельзя различить.
Некоторым переменным можно назначить предопределённые переменные.
В результате будет /articles/rus/2010/my-post
Переменная _format устанавливает request format(формат запроса).
Переменная _controller устанавливает controller.