有没有办法在ZF3中从视图助手调用自定义插件?
根据ZF3,助手工厂由我创建。
在ZF2中,我们称之为插件。
$ecommercePlugin = $this->getServiceLocator()
->get('ControllerPluginManager')
->get('CustomPlugin');
当从ZF3中删除serviceLocator时,如何调用插件?
修改
module.config
'view_helpers' => array(
'invokables' => array(
'CustomPlugin' => \MyMethod\Controller\Plugin\CustomPlugin::class
)
),
MymethodController\CustomPlugin
class CustomPlugin extends AbstractPlugin
{
//My methods
}
答案 0 :(得分:0)
我建议您使用CustomPlugin
注册ViewHelperManager
。您可以在Zend's Manual中找到有关配置的信息。这通常是您的模块module.config.php
的外观:
<?php
return [
'controller_plugins' => [
'invokables' => [
'CustomPlugin' => \MyMethod\Controller\Plugin\CustomPlugin::class
],
],
];
要注册它以用作视图助手,您可以添加:
<?php
return [
'controller_plugins' => [
'invokables' => [
'CustomPlugin' => \MyMethod\Controller\Plugin\CustomPlugin::class
],
],
'view_helpers' => [
'invokables' => [
'CustomPlugin' => \MyMethod\Controller\Plugin\CustomPlugin::class
]
],
];
这个新配置允许您从控制器和视图中调用$this->CustomPlugin()
。现在,您可能遇到需要将依赖项注入插件/视图助手的情况。在这种情况下,您只需创建一个工厂类来处理查找和注入依赖项并将配置更改为:
<?php
return [
'controller_plugins' => [
'factories' => [
'CustomPlugin' => \MyMethod\Controller\Plugin\CustomPlugin::class
],
],
'view_helpers' => [
'factories' => [
'CustomPlugin' => \MyMethod\Controller\Plugin\CustomPlugin::class
]
],
];
现在,当调用插件/视图助手时,工厂将运行并组装所需的类。如果您有任何疑问,请告诉我。配置中有很多灵活性,具有特定要求或CustomPlugin
类的示例,您的Module.php
/ module.config.php
配置可以提供更准确的示例,说明您要查找的内容。