Есть ли способ вызвать пользовательский плагин из View Helper в ZF3?
Согласно ZF3, Фабрика для Помощника создана мной.
В ZF2 это то, как мы называем плагин.
$ecommercePlugin = $this->getServiceLocator()
->get('ControllerPluginManager')
->get('CustomPlugin');
Как serviceLocator удаляется из ZF3, как вызвать плагин?
редактировать
module.config
'view_helpers' => array(
'invokables' => array(
'CustomPlugin' => \MyMethod\Controller\Plugin\CustomPlugin::class
)
),
MymethodController\CustomPlugin
class CustomPlugin extends AbstractPlugin
{
//My methods
}
Я бы порекомендовал зарегистрировать 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.php
config может предоставить более точный пример того, что вы ищете.
Других решений пока нет …