Sf2.0, стандартный блог, например.symfony 2 маршрутизация по модели
Кодекс routing.yml:
DevBlogBundle_post_show:
pattern: /posts/{id}
defaults: { _controller: "DevBlogBundle:Post:show" }
requirements:
_method: GET
id: \d+
Стандартный путь я генерировать URL для моего поста с помощью:
path('DevBlogBundle_post_show',{'id':post.id})
Я использую этот constrution во всех моих temlates/макеты, которые включают в себя список сообщений , Если я хочу изменить свой маршрут для post_show (скажем ... добавить параметр Slug /posts/{id}.{slug}), мне нужно будет изменить все мои temlates. Вместо этого я хочу, чтобы маршрут генерировать мой Post модель, что-то вроде:
public function getUrl(){
return $this->generator->generate('DevBlogBundle_post_show',array (...params...));}
Вопрос: Как я могу получить этот генератор для моей модели сообщение, что я должен «использовать ...» и как маршрут генерировать ?
В моих шаблонах я хочу разместить:
<a href="{{ post.getUrl() }}" ...>...</a>
Спасибо заранее.
Прежде всего, это плохая идея поместить getUrl в вашу модель, главным образом потому, что модель должна быть довольно глупой и не знать о том, как создавать URL-адреса. Один из способов - создать собственное расширение twig, которое может быть вызвано любым объектом определенного типа (например, сообщение и возвращает URL-адрес). Вы бы сделали что-то вроде '' {{post | url}} '' Прочитали о расширении ветки: http://www.kiwwito.com/article/extending-twig-in-symfony-2-add-custom-functions – Sgoettschkes
Я знаю, как создать веточку добр. И, возможно, вы правы. I просто попытайтесь создать что-то вроде RoR «to_param». Я создам одну ветку ext, которую я буду использовать вместо стандартных «путей» и «url». – ZloyPotroh
В этом случае вы можете посмотреть на пакет Sluggable. Maybethis - это то, что вы ищете: https://github.com/l3pp4rd/DoctrineExtensions/blob/master/doc/sluggable.md – Sgoettschkes