Symfony2. Как сделать чтобы список чего-либо из бд выводился на всех страницах? Здравствуйте, уважаемые знатоки!
Помогите мне, пожалуйста, решить проблему, нужно вывести блок категорий на всех страницах. Всего 18 страниц, и 18 роутов для них. Как это сделать не передавая в каждом контроллере и экшене выборку с категориями?

21 Авг 2019 в 07:08
167 +1
0
Ответы
1

Существует несколько способов решения данной проблемы в Symfony2. Один из самых распространенных способов - использовать сервисы и шаблонизатор Twig.

Создайте сервис для выборки категорий из базы данных. Создайте файл CategoryService.php в папке Services вашего бандла:<?php
namespace AppBundle\Services;
use Doctrine\ORM\EntityManager;
class CategoryService
{
private $em;
public function __construct(EntityManager $em)
{
$this->em = $em;
}
public function getCategories()
{
return $this->em->getRepository('AppBundle:Category')->findAll();
}
}Зарегистрируйте сервис в файле services.yml вашего бандла:services:
app.category_service:
class: AppBundle\Services\CategoryService
arguments: ['@doctrine.orm.entity_manager']В шаблоне base.html.twig (или другом общем шаблоне) выведите категории:{% set categories = app.category_service.getCategories() %}
{% for category in categories %}
<li>{{ category.name }}</li>
{% endfor %}

Теперь категории будут выводиться на всех страницах вашего сайта.

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

20 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 436 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир