我正在尝试注册我的自定义过滤器并在 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,还有其他设置/配置吗?
我可以在没有工厂的情况下使用过滤器,但需要通过工厂创建过滤器。
答案 0 :(得分:0)
您是否在Zend\InputFilter
https://github.com/zendframework/ZendSkeletonApplication/blob/master/config/modules.config.php
modules.config.php
像这样:
return [
'Zend\Router',
'Zend\InputFilter',
'Zend\Validator',
'Application',
];
答案 1 :(得分:0)
创建InputFilter实例后,我们需要更新默认的FilterManager
$inputFilter->getFactory()->getDefaultFilterChain()->setPluginManager(
$container->getServiceLocator()->get('FilterManager')
);
当然最好注入“FilterManager”,这只是一个测试代码。