【发布时间】:2022-01-29 20:59:00
【问题描述】:
这是我第一次使用NamespacedAttributeBag,所以我尝试了以下代码,但是当我从另一个位置(也在同一个控制器。
控制器:
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');
}
我要归档的是定义一个包含几个属性(数组)的包,并将这个包用于另一个函数或控制器。
expeption 说没有定义包,当我将会话 (dump($session)) 转储到 getDataAction 中时,我可以看到这是真的。我只能看到两个默认包 attributes 和 flashes 但缺少 TestData。
我搜索了一个更完整的示例,但没有发现任何非常有用的东西。我不太清楚这是否不能按我的意愿使用,或者我错过了一些重要的东西。
【问题讨论】:
-
会话已开始时无法注册包
-
我在注册包之前执行
$session->start()时收到该错误,但是当我在注册包之后将其移除或放置时,它工作正常。此外,我可以访问包和实际函数中的数据。但是当我尝试从同一个控制器上的另一个函数中获取那个包时,我得到了“未注册”错误。
标签: php symfony session symfony-3.4