如何获得对象是Symfony中的每个响应?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获得对象是Symfony中的每个响应?相关的知识,希望对你有一定的参考价值。
上下文
我在我的项目中有一个实体User
和一个实体Cart
。两个实体之间存在ManyToOne
关系:
/* /src/Entity/User.php */
/**
* @ORM\OneToMany(targetEntity="App\Entity\Cart", mappedBy="user", orphanRemoval=true)
*/
private $carts;
/* /src/Entity/Cart.php */
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="carts")
* @ORM\JoinColumn(nullable=false)
*/
private $user;
我在CartRepository
中也有一个返回用户当前购物车的方法。
/*src/Repository/CartRepository.php */
/**
* @param User $user
* @return mixed
* @throws NonUniqueResultException If the user somehow has several non-validated
* carts bidden to their account.
*/
public function findCurrentUserCart(User $user)
{
/* ... */
}
我的问题
我想做的是能够轻松访问当前用户购物车中购物车项目的当前计数,因此我可以在导航栏中显示它。为此,我需要能够轻松访问用户的当前购物车。
我曾考虑过通过控制器来获取它,但是这似乎很烦人,因为在站点的所有页面上都要求提供信息(因为它在导航栏中),所以我需要从每个操作中检索计数的控制器。
然后我想到在User
实体中具有一个简单的功能,例如getCartTotalCount()
,但这意味着直接从我的CartRepository
实体中使用User
,恕我直言,这是错误的(我的意思是,我的实体是普通对象,我觉得获取存储库不是一个好方法,是吗?]
所以我的问题是:是否有一种方法可以全局获取当前的购物车对象,因此可以在我的所有视图中使用它,而无需在控制器中的任何单个render()
方法中传递它?也许还有另一种路要走?
这是有关symfony文档的文档,其中介绍了如何创建树枝扩展名:https://symfony.com/doc/current/templating/twig_extension.html
在这种情况下,您需要创建一个自定义的树枝函数。
{{ render(controller(
'App\\Controller\\CartController::cartNavbar'
)) }}
如果显示此信息的模板增加了(例如,您要为空购物车使用一个图标,如果要在购物车中放置一个图标,则为另一个),您会发现,与使用扩展名
以上是关于如何获得对象是Symfony中的每个响应?的主要内容,如果未能解决你的问题,请参考以下文章