Как создать переменную в Yii2, работающую и в view и в layout?

Есть количество товаров в корзине.

Это количество отображается в шапке (layout), в меню для мобилки (layout) и на странице товаров, появляется кнопка прижатая к низу экрана (view).

введите сюда описание изображения

И в каждом случае идет отдельный вызов в базу данных, для поиска количества. Как создать какую-то глобальную переменную с одной вылазкой в базу, чтобы можно было ее вызвать во всех трех местах?


Ответы (1 шт):

Автор решения: Алексей Шиманский

В общем всё просто:

  • Вариант 1 - сделать один ajax запрос на серевер и далее с помощью Javascript нарисовать данные там, где необходимо. Хоть в сотне мест.

  • Вариант 2 - суть сводится к сохранению знаний о корзине куда-либо и при следующем обращении к методу - брать данные оттуда. Где эти данные будут храниться - вариантов тоже много:

    • Куки/Сессия
    • Кэш (например файловый кэш)
    • Можно в модели. Сделать свойство $cartData или $cartCount или что вы ещё хотите. Сделать метод, который смотрит, если $cardData === null то делаем запрос в БД, а в ином случае - брать данные из свойства.

    Главное не забывать очистить невалидные данные в какой-либо необходимый момент

→ Ссылка