Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
276 of 1361 menu
◀ ▶

Метод getBag

Метод getBag класса Session возвращает объект хранилища BagInterface для указанного типа данных сессии. Первым параметром передаётся имя хранилища. Чаще всего используются хранилища 'attributes' для обычных данных и 'flashes' для flash-сообщений. Метод удобен, когда нужно работать с сессией через единый объект Session, а не через отдельные сервисы.

Синтаксис

public function getBag(string $name): BagInterface

Параметр name задаёт имя хранилища. Если хранилище с таким именем ещё не создано, Symfony создаст его автоматически и вернёт пустой объект.

Пример

Давайте получим хранилище 'attributes' и запишем в него значение по ключу 'user':

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(Request $request): Response { $session = $request->getSession(); $bag = $session->getBag('attributes'); $bag->set('user', 'abcde'); return new Response($bag->get('user')); } } ?>

Результат выполнения кода:

abcde

Пример

Давайте получим список всех ключей хранилища 'attributes':

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/keys', name: 'article_keys')] public function keys(Request $request): Response { $session = $request->getSession(); $bag = $session->getBag('attributes'); $bag->set('user', 'abcde'); $bag->set('page', 1); $bag->set('active', true); return new Response(implode(', ', array_keys($bag->all()))); } } ?>

Результат выполнения кода:

"user, page, active"

Пример

Давайте получим хранилище 'flashes' и добавим в него flash-сообщение:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/flash', name: 'article_flash')] public function flash(Request $request): Response { $session = $request->getSession(); $flashes = $session->getBag('flashes'); $flashes->add('success', 'article saved'); return new Response(implode(', ', $flashes->get('success'))); } } ?>

Результат выполнения кода:

"article saved"

Смотрите также

  • класс Session,
    который управляет данными сессии
  • метод get,
    который читает значение из сессии
  • метод set,
    который записывает значение в сессию
  • метод getFlashBag,
    который возвращает хранилище flash-сообщений
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить