0

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

1 回答 1

0

我建议CustomPlugin使用ViewHelperManager. 您可以在Zend 的手册中找到有关配置的信息。这通常是您的模块的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.phpconfig 可以提供您正在寻找的更准确的示例。

于 2017-03-28T12:57:27.297 回答