从视图助手调用自定义插件

时间:2017-03-28 11:30:58

标签: php zend-framework3 zend-controller-plugin

有没有办法在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
}

1 个答案:

答案 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配置可以提供更准确的示例,说明您要查找的内容。