2017-02-07 13 views
1

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

A plugin by the name "myCustomFilter" was not found in the plugin manager 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, так есть ли что-нибудь еще для настройки/настройки?

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

ответ

0

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

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

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

0

ли нагрузить вас в Zend\InputFilter в вашем modules.config.phphttps://github.com/zendframework/ZendSkeletonApplication/blob/master/config/modules.config.php

Как это:

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

Да, я загружаю его ... – tasmaniski

+0

В вашем module.config.php вы пытались заменить 'filters' >> 'input_filters' –

+0

yes Я пробовал :) :) за эти 2 дня я пробовал все .. Я начинаю задаваться вопросом, возможно ли это - зарегистрировать фильтр через фабрику – tasmaniski