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()
操作时会收到该错误,但当我在注册包之后移除或放置该包时,效果良好。此外,我还可以访问包和实际功能中的数据。但当我试图从同一控制器上的另一个函数获取该包时,我得到了“未注册”错误。