Есть готовый backend, есть сервисы для извлечения различного контента
Задача написать гибкий фронтенд для отображения этого контента
Т.е вызов урлов типа
/news
/My-First-Post
/Product/T-Shirt-white
/Company/About-Us
должен извлекать какой-то контент и передавать необходимые переменные во вьюшку
маппить урл в экшен контроллера и дергать там методы сервисов делающих выборки (как у меня сейчас) мне начинает не нравится
увидел подход доктрины
public function(Post $post) {
}
т.е врезается listener который фетчит post по ИД и в контроллере мы уже имеем этот обьект
но если мне надо кроме контента поста еще что-то отобразить, я должен в теле котроллера опять дергать сервис чтоб сделать дополнительную выборку
вот родилась идея
# routing.yml
single_post:
route: /someregex
defaults:
_controller: viewcontroller:index
template: singlepost.html.twig
fetch: [ postContent ]
post_with_children:
route: /someregex
defaults:
_controller: viewcontroller:index
template: post_with_children.html.twig
fetch: [ postContent, postChildren ]
news:
route: /someregex
defaults:
_controller: viewcontroller:index
template: news.html.twig
fetch: [ lastNews ]
home:
route: /someregex
defaults:
_controller: viewcontroller:index
template: news.html.twig
fetch: [ lastTreeNews, newProducts, homePostContent ]
через конфигурацию указывать что должно быть профетчено прежде чем оно попадет в контроллер
мнения?
как это сделано в толковых решениях?