Зарегистрировать пользовательский фильтр через Factory

Я пытаюсь зарегистрировать свой пользовательский фильтр и использовать в getInputFilter () метод, но постоянно получаю ошибку:

Плагин с именем «myCustomFilter» не найден в менеджере плагинов.
ZendFilterFilterPluginManager

$inputFilter = new \Zend\InputFilter\InputFilter;
$inputFilter->add([
'name'       => 'inputname',
'required'   => true,
'filters'    => [
[
'name' => 'myCustomFilter'
]
],
]);

И зарегистрируйте его в module.config.php

return [
'filters' => [
'aliases'   => [
'myCustomFilter' => Test\Filter\MyCustomFilter::class,
],
'factories' => [
Test\Filter\MyCustomFilter::class => Test\Filter\MyCustomFilterFactory::class,
],
],
];

Также в application.config.php я зарегистрировался

'modules' => [
...
'Zend\Filter',
'Zend\InputFilter',
'Zend\Validator',
],

Обратите внимание, что я использую ZF3, поэтому есть ли что-то еще для установки / настройки?

Я могу использовать фильтр без фабрики, но требуется создание фильтра через фабрику.

1

Решение

Вы загружаете Zend\InputFilter в вашем modules.config.php https://github.com/zendframework/ZendSkeletonApplication/blob/master/config/modules.config.php

Как это :

return [
'Zend\Router',
'Zend\InputFilter',
'Zend\Validator',
'Application',
];
0

Другие решения

После создания экземпляра InputFilter нам нужно обновить FilterManager по умолчанию

$inputFilter->getFactory()->getDefaultFilterChain()->setPluginManager(
$container->getServiceLocator()->get('FilterManager')
);

Конечно, лучше ввести «FilterManager», это всего лишь тестовый код.

0

По вопросам рекламы [email protected]