Документация ZF2 гласит следующее:
InputFilterManager, сопоставление с Zend \ Mvc \ Service \ InputFilterManagerFactory. Это создает и возвращает экземпляр Zend \ InputFilter \ InputFilterPluginManager, который может использоваться для управления и сохранения экземпляров входных фильтров.
- Как запустить работу cron с помощью zend framework 2
- zf2 form: заполнить поле select с данными, поступающими из базы данных
- zftool не ведет себя так, как ожидалось
- Zendframework 2. ID-параметр в SQL-запросе
- отправлять электронную почту с прикрепленными файлами в ZF2
- Событие отправки Zend Framework 2 не запускается до действия
У меня есть собственный класс входных фильтров zf2, и я добавляю фильтры и валидаторы внутри метода init (), например:
namespace Application\Filter; use Zend\InputFilter\InputFilter; class GlassFilter extends InputFilter { public function init() { $this->add(array( 'name' => 'glassname', 'required' => true, 'filters' => array( array('name' => 'StringToUpper'), ), 'validators' => array( array( 'name' => 'StringLength', 'options' => array('min' => 3), ), )); }
Также я добавил следующий ключ к моему module.config.php
'filters' => array( 'invokables' => array( 'glassfilter' => '\Application\Filter\GlassFilter', ), ),
Мой вопрос в том, как я могу построить свой GlassFilter с помощью InputFilterManager ? Правильно ли это? Я нашел эту ветку, но я хочу понять взаимосвязь между пользовательскими InputFilters и InputFilterManager.
Хорошо, проведя 3 кровавых часа (благодаря невероятной (!) Документации), я понял это. Я пишу свое решение в качестве ответа, надеюсь, это поможет другим, кто хочет написать свои собственные входные фильтры.
module.config.php
с помощью ключевого module.config.php
input_filters , а не фильтра, фильтров, filter_manger, filtermanager и т. Д. Zend\InputFilter\InputFilter
при написании собственного GlassFilter
. init()
GlassFilter
, а не в __constructor()
. Он будет вызываться автоматически после строительства. inputfiltermanager
, а не servicemanager
напрямую. Пример конфигурации:
'input_filters' => array( 'invokables' => array( 'glassfilter' => '\Application\Filter\GlassFilter', ), ),
Пример использования:
$glassfilter = $serviceLocator->get('InputFilterManager')->get('glassfilter');