php - Zend Framework 中的视图助手名称冲突
php - Conflicting view helper names in Zend Framework
我正在使用名为 Facebook
的 module
,它有一个名为 shareUrl
的视图助手。此视图助手获取任何 URL.
的 Facebook 分享 URL
但是,我最近添加了另一个名为 Twitter
的 module
,它还有一个名为 shareUrl
.
的视图助手
在 Zend Framework 版本 2 或 3 中,在视图中,我如何调用一个 shareUrl
视图助手与另一个?
澄清一下,我认为代码如下所示:
$facebookShareUrl = $this->shareUrl('https://www.example.com/');
$twitterShareUrl = $this->shareUrl('https://www.example.com/');
我希望 $facebookShareUrl
和 $twitterShareUrl
存储两个不同视图助手的 return 值。
如果您有两个同名助手,则只有一个可用,因为它是在 servicemanager (viewhelpermanager) 中以给定名称注册的。如果通过在 application.config.php
中加载模块来切换它们,则可以更改默认值。但这并不是您问题的真正解决方案。
所以有多种方法可以获得您需要的正确视图助手。
1) 最好的方法是使用他们的 FQCN 为注册的 viewhelpers 设置一个别名。请参阅一些示例代码,其中我们创建了可以在 viewherlpers 中使用的别名,例如 $this->facebookShareUrl('exmaple.com')
return [
'view_helpers' => [
'aliases' => [
'facebookShareUrl' => FacebookModule\Helper\ShareUrlHelper::class,
'twitterShareUrl' => TwitterModule\Helper\ShareUrlHelper::class,
],
]
]
2) 使用视图本身中的 viewhelpermanager 通过其 FQCN 获取助手,使用 PhpRenderer
实例。在 view.phtml
个文件中
$viewHelperManager = $this->getHelperPluginManager();
$facebookShareUrlHelper = $viewHelperManager->get(FacebookModule\Helper\ShareUrl::class);
$twitterShareUrlHelper = $viewHelperManager->get(TwitterModule\Helper\ShareUrl::class);
我正在使用名为 Facebook
的 module
,它有一个名为 shareUrl
的视图助手。此视图助手获取任何 URL.
但是,我最近添加了另一个名为 Twitter
的 module
,它还有一个名为 shareUrl
.
在 Zend Framework 版本 2 或 3 中,在视图中,我如何调用一个 shareUrl
视图助手与另一个?
澄清一下,我认为代码如下所示:
$facebookShareUrl = $this->shareUrl('https://www.example.com/');
$twitterShareUrl = $this->shareUrl('https://www.example.com/');
我希望 $facebookShareUrl
和 $twitterShareUrl
存储两个不同视图助手的 return 值。
如果您有两个同名助手,则只有一个可用,因为它是在 servicemanager (viewhelpermanager) 中以给定名称注册的。如果通过在 application.config.php
中加载模块来切换它们,则可以更改默认值。但这并不是您问题的真正解决方案。
所以有多种方法可以获得您需要的正确视图助手。
1) 最好的方法是使用他们的 FQCN 为注册的 viewhelpers 设置一个别名。请参阅一些示例代码,其中我们创建了可以在 viewherlpers 中使用的别名,例如 $this->facebookShareUrl('exmaple.com')
return [
'view_helpers' => [
'aliases' => [
'facebookShareUrl' => FacebookModule\Helper\ShareUrlHelper::class,
'twitterShareUrl' => TwitterModule\Helper\ShareUrlHelper::class,
],
]
]
2) 使用视图本身中的 viewhelpermanager 通过其 FQCN 获取助手,使用 PhpRenderer
实例。在 view.phtml
个文件中
$viewHelperManager = $this->getHelperPluginManager();
$facebookShareUrlHelper = $viewHelperManager->get(FacebookModule\Helper\ShareUrl::class);
$twitterShareUrlHelper = $viewHelperManager->get(TwitterModule\Helper\ShareUrl::class);