Использование Symfony NamespacedAttributeBags в контроллере - PullRequest
0 голосов
/ 05 июня 2018

Я впервые использую NamespacedAttributeBag, поэтому я пробую следующий код, но он дает мне исключение: " SessionBagInterface TestData не зарегистрирован. ", когда я вызываю его из другого места, также внутритот же контроллер.

Контроллер

public function indexAction(Request $request, SessionInterface $session)
{

        $session = $request->getSession();

        $bag = new NamespacedAttributeBag();
        $bag->setName('TestData');
        $bag->set("Type", "Dummy");

        $session->registerBag($bag);
}


public function getDataAction(Request $request, SessionInterface $session)
{

        $session = $request->getSession();
        $bag = $session->getBag('TestData');

}

Что я хочу заархивировать, так это определить пакет с парой атрибутов (массивов) и использовать этот пакет для другой функции или контроллера.

В исключении говорится, что сумка не определена, и я вижу, что это правда, когда я сбрасываю сеанс (dump($session)) внутри getDataAction.Я могу выбрать только две сумки по умолчанию attributes и flashes, но отсутствует TestData.

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

Спасибо за помощь!

1 Ответ

0 голосов
/ 04 декабря 2018

В Symfony 4.2,

Для использования проекта NamespacedAttributeBag вы можете переопределить службу " session.attribute_bag " в config / services.yaml :

services:
    _defaults:
        autowire: true      
        autoconfigure: true  
 ...
    'session.attribute_bag':
         class: 'Symfony\Component\HttpFoundation\Session\Attribute\NamespacedAttributeBag'

и теперь используйте ваше пространство имен для данных сеанса пользователя с контроллера без какой-либо другой конфигурации:

class DossierController extends AbstractController {
    public function index(Request $request) {
       $request->getSession()->set('namespace1/categoryA/value1', $value);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...