【发布时间】:2021-01-07 07:23:38
【问题描述】:
我读过Namespaced Attributes。 我尝试使用此功能:
#src/Controller/CartController.php
public function addProduct(int $cart_id, int $product_id, Request $request, SessionManager $sessionManager)
{
$session = new Session(new NativeSessionStorage(), new NamespacedAttributeBag());
$session->set("cart_$cart_id/product_$product_id", $request->get('selected_product_qty'));
dump($session);
die();
}
效果很好。
所以作为改进,我想override the session services,所以它会在任何地方使用namespacedattributebag,它使用依赖注入而不是将会话服务耦合到addProduct函数中。
为此,我编辑了我的 services.yaml
#config/services.yaml
session:
public: true
class: Symfony\Component\HttpFoundation\Session\Session
arguments: ['@session.storage', '@session.namespacedattributebag']
session.namespacedattributebag:
class: Symfony\Component\HttpFoundation\Session\Attribute\NamespacedAttributeBag
然后我更新CartController:
public function addProduct(int $cart_id, int $product_id, Request $request, Session $session)
{
$session->set("cart_$cart_id/product_$product_id", $request->get('selected_product_qty'));
dump($session);
die();
}
现在我收到以下错误消息:
检测到服务“session”的循环引用,路径:“session -> session.flash_bag -> session”。
这个问题应该已经在这个问题中解决了:#36261 一直是discussed here。
但对我来说问题仍然存在...... (我使用的是 Symfony 5.1)
【问题讨论】:
标签: php symfony session symfony5