Intereting Posts
Условия проектирования MVC: CRUDing унаследованные модели используя Google Docs в качестве базы данных? Значение ключа ключа foreach PHP Правильное формирование URL-адресов с помощью строки запроса и символа «хэштаг» событие onclick открывает окно и в поле отправляет его ссылки на php-функцию, которые устанавливают некоторые значения в db Получение значения радиокнопки и отправка через ajax на php Файл загрузки Codeigniter не работает в Интернете, но работает на localhost Совместимость браузера jQuery (IE) PHP base64 encode не декодируется Android Неожиданный {ожидаемый (? PHP setcookie () для домена, но НЕ поддомены Символьная печать конфликтует при использовании разных кодировок для статического и динамического содержимого PHP для заполнения всех букв (в том числе после косой черты), за исключением определенных слов как получить платежную информацию о Magento? Выравнивание ключей массива PHP

Пользовательская маршрутизация symfony на основе доктрины

Мне нужно иметь динамические маршруты с symfony 2, где в URL-адрес добавлен параметр slug и связан со страницей в базе данных. Каждая страница имеет собственный пул и его содержимое, хранящиеся в базе данных. Я прочитал статью « Расширенная маршрутизация», но для старой версии Symfony. Для новой версии кажется, что ParamConverter выполняет аналогичную работу. Является ли это правильным способом реализации маршрутизации, основанной на доктринах, или я должен написать настоящий пользовательский класс маршрутизатора?

Related of "Пользовательская маршрутизация symfony на основе доктрины"

Да, я бы использовал ParamConverter. По умолчанию DoctrineParamConverter, который поставляется с FrameworkExtraBundle, может обрабатывать самые простые случаи – то есть он знает, как искать объект, связанный с типом, полем с тем же именем, что и заполнитель маршрута:

// routing.yml foo_route: pattern: /{slug}/ defaults: { _controller: FooVendorBundle:Foo:view } // FooVendorBundle/Controller/FooController.php public function view(FooEntity $foo) { // $foo will be an instance of FooEntity } 

Обычно в списке аргументов контроллера вы должны иметь переменную $slug , которая будет заполнена из содержимого {slug} захваченного маршрутом. Однако с помощью ParamConverter он распознает, что вы запрашиваете класс FooEntity , и попытаетесь найти этот объект по захваченному значению slug и заполнить переменную $foo этим объектом.

По умолчанию ParamConverter, конечно, ограничен только возможностью поиска свойств, которые на самом деле существуют в сущности: если FooEntity не имеет поля с именем slug , поиск не будет выполнен, и будет выведено исключение. Как я уже сказал, это будет обрабатывать большинство базовых вариантов использования. Если вам нужно больше углубленного преобразования параметров запроса, вы всегда можете написать свой собственный.