Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在控制器中使用Symfony NamespacedTributebags_Php_Symfony_Session_Symfony 3.4 - Fatal编程技术网

Php 在控制器中使用Symfony NamespacedTributebags

Php 在控制器中使用Symfony NamespacedTributebags,php,symfony,session,symfony-3.4,Php,Symfony,Session,Symfony 3.4,这是我第一次使用NamespacedAttributeBag所以,我尝试了下面的代码,但它给了我一个异常“SessionBagInterface TestData未注册。”当我从另一个位置调用它时,也在同一个控制器内 控制器 public function indexAction(Request $request, SessionInterface $session) { $session = $request->getSession(); $bag =

这是我第一次使用
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');

}
我想归档的是定义一个带有几个属性(数组)的包,并在另一个函数或控制器上使用这个包

Expption说包没有定义,当我在getDataAction中转储会话(
dump($session)
)时,我可以看到它是真的。我只能使用两个默认行李
属性
闪烁
,但缺少
测试数据

我搜索了一个更完整的例子,但没有发现任何有用的东西。我不太清楚这是不是不能按照我的意愿使用,或者我遗漏了一些重要的东西

谢谢你的帮助

在Symfony 4.2上

为了明智地使用NamespacedAttributeBag项目,您可以覆盖config/services.yaml中的“session.attribute\u bag”服务:

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);
    }
}
在Symfony 4.2上

为了明智地使用NamespacedAttributeBag项目,您可以覆盖config/services.yaml中的“session.attribute\u bag”服务:

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);
    }
}

当会话已启动时无法注册行李在注册行李之前执行
$session->start()
操作时,我会遇到此错误,但当我在注册行李后将其移除或放置时,它工作正常。此外,我还可以访问包和实际功能中的数据。但是,当我试图从同一控制器上的另一个函数获取该包时,我会收到“未注册”错误。会话已启动时无法注册该包我在注册包之前执行
$session->start()
操作时会收到该错误,但当我在注册包之后移除或放置该包时,效果良好。此外,我还可以访问包和实际功能中的数据。但当我试图从同一控制器上的另一个函数获取该包时,我得到了“未注册”错误。