如何使用InputFilterManager来构建定制InputFilters在ZF2(How to

2019-09-04 00:20发布

ZF2文件说,下面就defult服务的文件 ;

InputFilterManager,映射的Zend \的mvc \服务\ InputFilterManagerFactory。 此创建并返回的Zend \ InputFilter输入\ InputFilterPluginManager,其可用于管理和持续输入滤波器实例的一个实例。

我有一个自定义ZF2 InputFilter输入类和我添加内部初始化过滤器和验证器()方法等以下;

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',
    ),
),

我的问题是,我怎么能使用InputFilterManager构建我的GlassFilter? 这是一个正确的做法? 我发现这个线程 ,但我想了解定制InputFilters和InputFilterManager之间的关系。

Answer 1:

好了,花费3个小时血战(感谢不可思议的(!)文档)后,我想通了。 我在写我的解决方案作为一个答案,希望这将帮助其他人谁想要写自己的定制inputfilters。

  1. 你应该在注册您的自定义输入过滤module.config.php通过input_filters顶端的按键,不过滤,过滤器,filter_manger,filtermanager等。
  2. 扩展默认Zend\InputFilter\InputFilter写自己时GlassFilter
  3. 写下您的过滤器里面init()方法GlassFilter ,而不是在__constructor() 它将建设后自动被调用。
  4. 然后把它通过随时随地inputfiltermanager ,不是servicemanager直接。

配置例子:

'input_filters' => array(
    'invokables' => array(
        'glassfilter' => '\Application\Filter\GlassFilter',
     ),
),

用法示例:

$glassfilter = $serviceLocator->get('InputFilterManager')->get('glassfilter');


文章来源: How to use InputFilterManager to construct custom InputFilters in Zf2