gpt4 book ai didi

zend-framework2 - 所有 ViewModel 中的用户身份

转载 作者:行者123 更新时间:2023-12-01 10:56:34 25 4
gpt4 key购买 nike

我使用 Zend\Authentication\AuthenticationService 来管理当前登录的用户。现在我希望实体对象默认在所有 ViewModel 中可用,而不必在每个 Controller 操作中分配用户对象。

有什么好的方法吗?或者我是否需要为 ViewModels 创建一个工厂并从那里注入(inject)用户的身份?在那种情况下,每次我想创建一个 ViewModel 时我都必须使用 ServiceManager,这不是很吸引人。

有没有更优雅的方式?我能否以某种方式直接从 ViewModel(即模板)中访问 AuthenticationService?

最佳答案

受到 Ocramius 和 Bram 的回答的启发,我对 ZF View Helpers 进行了更深入的研究。而且 tadaa:事实证明,ZF2 已经带有一个 Helper 来访问任何 View 模型中的用户身份。 View Helper 简称为 identity

为了让它工作,你需要添加 Zend\Authentication\AuthenticationService 到可调用类的列表中(不知道,为什么这不是默认的)例如在你的 config/autoload/global.php 中:

return array(
'service_manager' => array(
'invokables' => array(
'Zend\Authentication\AuthenticationService' => 'Zend\Authentication\AuthenticationService',
),
),
);

之后,您可以轻松地从任何模板访问当前用户的身份:

<p>Hello <?php echo $this->identity()->getName() ?></p>

再次特别感谢 Ocramius 让我走上正轨!如果你不使用 Zend\Authentication\AuthenticationService 他的答案仍然适用。

关于zend-framework2 - 所有 ViewModel 中的用户身份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14903188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com