Leo*_*los 1 php zend-framework view-helpers zend-framework2 zend-framework3
我正在使用一个module名为Facebookcall的调用者shareUrl.此视图帮助程序获取任何URL的Facebook共享URL.
但是,我最近添加了另一个module调用Twitter,它也有一个调用的视图助手shareUrl.
在Zend Framework版本2或3中,在视图中,如何调用一个shareUrl视图助手而不是另一个?
只是为了澄清,我视图中的代码如下所示:
$facebookShareUrl = $this->shareUrl('https://www.example.com/');
$twitterShareUrl = $this->shareUrl('https://www.example.com/');
Run Code Online (Sandbox Code Playgroud)
我想$facebookShareUrl并$twitterShareUrl存储两个不同视图助手的返回值.
如果您有两个具有相同名称的帮助程序,则只有一个可用,因为它在servicemanager(viewhelpermanager)中以给定名称注册.如果您在加载模块时切换它们,您application.config.php可以更改默认值.但这不是解决问题的真正办法.
因此,有多种方法可以获得您需要的正确视图.
1)最好的方法是使用FQCN为已注册的视图助手设置别名.查看一些示例代码,我们创建可以在viewherlpers中使用的别名$this->facebookShareUrl('exmaple.com')
return [
'view_helpers' => [
'aliases' => [
'facebookShareUrl' => FacebookModule\Helper\ShareUrlHelper::class,
'twitterShareUrl' => TwitterModule\Helper\ShareUrlHelper::class,
],
]
]
Run Code Online (Sandbox Code Playgroud)
2)使用PhpRenderer实例,使用视图本身中的viewhelpermanager,通过其FQCN获取帮助程序.在一个view.phtml文件中
$viewHelperManager = $this->getHelperPluginManager();
$facebookShareUrlHelper = $viewHelperManager->get(FacebookModule\Helper\ShareUrl::class);
$twitterShareUrlHelper = $viewHelperManager->get(TwitterModule\Helper\ShareUrl::class);
Run Code Online (Sandbox Code Playgroud)