Мне нужно иметь динамические маршруты с symfony 2, где в URL-адрес добавлен параметр slug и связан со страницей в базе данных. Каждая страница имеет собственный пул и его содержимое, хранящиеся в базе данных. Я прочитал статью Advanced Routing, но для старой версии Symfony. Для новой версии кажется, что ParamConverter выполняет аналогичную работу. Является ли это правильным способом реализации маршрутизации, основанной на доктринах, или я должен написать настоящий пользовательский класс маршрутизатора?Пользовательская маршрутизация symfony на основе доктрины
ответ
Я бы использовал ParamConverter, да. По умолчанию DoctrineParamConverter, который поставляется с FrameworkExtraBundle может обрабатывать самые простые случаи - то есть, он знает, как смотреть вверх typehinted объект на поле с тем же именем, что и маршрут заполнителем:
// 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
, то поиск потерпит неудачу и будет сгенерировано исключение , Как я уже сказал, это будет обрабатывать большинство базовых вариантов использования. Если вам нужно больше углубленного преобразования параметров запроса, вы всегда можете написать свой собственный.
, если мне нужно обрабатывать динамические страницы с помощью slug, но также и обычные страницы с контроллерами я должен использовать собственный класс маршрутизатора, который обрабатывает каждый из типов страниц (статический и динамический)? – Stefano
Я действительно начинаю любить симфонию. +1 –
- 1. Symfony - Маршрутизация на основе субдомена?
- 2. Symfony 1.4: маршрутизация на основе частичного URL
- 3. Пользовательская маршрутизация через global.asax
- 4. Расчет в запросе на обновление доктрины symfony
- 5. WebForms пользовательская/динамическая маршрутизация
- 6. Symfony ORM доктрины запросов
- 7. Оптимизация доктрины Symfony
- 8. Учреждение доктрины Symfony Query
- 9. Пользовательская маршрутизация ASP.NET MVC на основе параметров запроса
- 10. Пользовательская маршрутизация в балансировщике нагрузки
- 11. WSO2 API Manager Пользовательская маршрутизация
- 12. MVC пользовательская маршрутизация проблема
- 13. Пользовательская маршрутизация в MVC5
- 14. Пользовательская маршрутизация .NET MVC
- 15. Laravel 5: пользовательская маршрутизация
- 16. ASP.NET MVC - пользовательская маршрутизация
- 17. MVC Core Пользовательская маршрутизация
- 18. ASP.NET MVC4 Пользовательская маршрутизация
- 19. Пользовательская маршрутизация ASP.NET MVC4
- 20. symfony db и структура доктрины
- 21. Маршрутизация на symfony 1.4 не работает
- 22. Symfony соединение доктрины вровень сохраняется
- 23. symfony 2 отношение доктрины onetoone
- 24. Symfony-cmf Маршрутизация
- 25. HTTP-маршрутизация в Symfony
- 26. Маршрутизация Symfony не работает
- 27. Symfony, динамическая маршрутизация
- 28. Маршрутизация формы Symfony
- 29. Недоступный сайт Маршрутизация Symfony
- 30. FullCalendar Маршрутизация с Symfony
Можете ли вы объяснить, что вы подразумеваете под динамическим маршрутом, пожалуйста? – Problematic
уверен, я имею в виду, что у меня есть содержимое каждой страницы в базе данных с столбцом slug в таблице, который служит как «url». Когда я цифру domain.com/test test является slug и является динамическим – Stefano
Если вы говорите о слизняках, вы должны получить все, что захотите, в документе Symfony2: http://symfony.com/doc/current/book/routing. html – Nanocom