Как сделать фронтенд для простой CMS?

Есть готовый 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 ]


через конфигурацию указывать что должно быть профетчено прежде чем оно попадет в контроллер

мнения?

как это сделано в толковых решениях?
  • Вопрос задан
  • 437 просмотров
Пригласить эксперта
Ответы на вопрос 1
@semki_1
Взять к примеру Codeigniter. К примеру страница с адресом product/cars/Audi будет означать контроллер - product, метод - cars, audi - значение поля.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы