РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить