Динамический контент Symfony 3.4 на маршрутах (слушатель?)

Я хотел бы иметь динамический контент на нескольких страницах моего приложения. Этот контент будет храниться в моей базе данных, и администратор сможет обновлять его, когда захочет.

Можно ли создать прослушиватель, выполняемый каждый раз при вызове маршрута, чтобы проверить, есть ли в базе данных контент для этого маршрута, а затем внедрить его в шаблон?

Большое спасибо


person Kirk_    schedule 21.05.2018    source источник


Ответы (2)


Если вы посмотрите на маршрут, это позволит вам сделать более динамичные. То есть:

/**
 * @Route("/pages/{fieldname}/{value}
 */
public function pageContentAction(Request $request)
{
...
}

Таким образом, вы можете повторно использовать параметры и проверять содержимое БД:

        $fieldName = $request->get('fieldname');
        $newValue = $request->get('value');

        $page = $em->getRepository('AppBundle:Pages')->findOneBy(
            array('fieldname' =>$fieldName,'value'=>$value)
        );
        if ($page == null){
            return new JsonResponse(['message'=>'Page Not Found'],404);
        }
person Jan Myszkier    schedule 21.05.2018
comment
Да, я знаю об этом. Я искал способ добавить базу динамического контента на имена маршрутов. Например: на странице index_users администратор может установить собственный пояснительный текст в БД для отображения на странице. Это как CMS, но для symfony. - person Kirk_; 21.05.2018
comment
@Кирк_ так? ответ выше... В вашем методе для маршрута index_users вы получите что-то из таблицы, например: тексты и используйте findOneBy([pageId =› index_users]);... и так далее - person Eakethet; 21.05.2018
comment
@Kirk_, тогда, может быть, вы вместо этого ищете маршруты, загруженные из базы данных? См. symfony.com/doc/3.4/routing/routing_from_database.html. - person Jan Myszkier; 21.05.2018
comment
Я больше ищу способ запускать запрос каждый раз, когда выполняется маршрут. @Eakethet Добавление одного и того же кода для всех маршрутов было бы неправильным и не самым удобным решением. - person Kirk_; 21.05.2018

Вы можете взглянуть на динамический маршрутизатор (https://symfony.com/doc/master/cmf/bundles/routing/dynamic.html). Это часть пакета Symfony CMF (http://cmf.symfony.com/), который на самом деле является способ сборки CMS для Symfony.

person Francesco Abeni    schedule 23.05.2018