我正在将Symfony2与FOSUserBundle一起使用。我创建了一个方法,询问用户是否已执行特定操作,例如$user->hasVoted()
。
在我的树枝模板中,我想问一下
{% if user.hasVoted() %}
在每个模板中(因为它暗示要包括其他部分),但是我不想将整个$user
对象传递给每个模板。
有没有什么方法可以使该用户方法在所有模板中都可以访问(或者我也可以将布尔值传递给所有模板),而不必将其显式传递给每个模板?
我知道从Symfony Cookbook将变量注入所有模板的知识。
# app/config/config.yml
twig:
# ...
globals:
ga_tracking: UA-xxxxx-x
但是Cookbook条目要么告诉您如何注入静态值(如上面的示例中所示),要么告诉您如何注入服务。
有没有一种简单的方法,如何在不必定义服务并将其注入的情况下包括这个布尔值:
# app/config/config.yml
twig:
# ...
globals:
user_has_voted: "@acme_user.user_has_voted"
通过app.user
任何地方都可以使用经过身份验证的用户。
{% if app.user.hasVoted() %}
或者,以更简洁的方式,您可以创建诸如的树枝扩展名is_granted
。这使您可以在将来更改逻辑,而无需更改模板。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句