通过工厂注册自定义过滤器
Register custom Filter via Factory
我正在尝试注册我的自定义过滤器并在 getInputFilter() 方法中使用,但不断出现错误:
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,所以还有什么要 setup/configure 的吗?
我可以在没有工厂的情况下使用过滤器,但需要通过工厂创建过滤器。
您是否在 modules.config.php
https://github.com/zendframework/ZendSkeletonApplication/blob/master/config/modules.config.php
中加载 Zend\InputFilter
像这样:
return [
'Zend\Router',
'Zend\InputFilter',
'Zend\Validator',
'Application',
];
创建 InputFilter 的实例后,我们需要更新默认的 FilterManager
$inputFilter->getFactory()->getDefaultFilterChain()->setPluginManager(
$container->getServiceLocator()->get('FilterManager')
);
当然注入更好"FilterManager"这只是测试代码
我正在尝试注册我的自定义过滤器并在 getInputFilter() 方法中使用,但不断出现错误:
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,所以还有什么要 setup/configure 的吗?
我可以在没有工厂的情况下使用过滤器,但需要通过工厂创建过滤器。
您是否在 modules.config.php
https://github.com/zendframework/ZendSkeletonApplication/blob/master/config/modules.config.php
Zend\InputFilter
像这样:
return [
'Zend\Router',
'Zend\InputFilter',
'Zend\Validator',
'Application',
];
创建 InputFilter 的实例后,我们需要更新默认的 FilterManager
$inputFilter->getFactory()->getDefaultFilterChain()->setPluginManager(
$container->getServiceLocator()->get('FilterManager')
);
当然注入更好"FilterManager"这只是测试代码