edi*_*igu 9 php zend-framework2
ZF2文档说明了defult服务文档 ;
InputFilterManager,映射到Zend\Mvc\Service\InputFilterManagerFactory.这将创建并返回Zend\InputFilter\InputFilterPluginManager的实例,该实例可用于管理和保留输入过滤器实例.
我有一个自定义zf2 inputfilter类,我在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),
),
));
}
Run Code Online (Sandbox Code Playgroud)
我还在我的module.config.php中添加了以下键
'filters' => array(
'invokables' => array(
'glassfilter' => '\Application\Filter\GlassFilter',
),
),
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何使用InputFilterManager构建我的GlassFilter?这是正确的方法吗?我找到了这个线程,但我想了解自定义InputFilters和InputFilterManager之间的关系.
edi*_*igu 30
好吧,花了3个小时后(感谢令人难以置信的(!)文档)我想通了.我正在编写我的解决方案作为答案,希望它能帮助那些想要编写自定义输入过滤器的人.
module.config.php通过input_filters top键注册自定义inputfilter ,而不是filter,filters,filter_manger,filtermanager等.Zend\InputFilter\InputFilter在编写自己的时候扩展默认值GlassFilter.init()方法中写下你的过滤器GlassFilter,而不是在__constructor().它将在施工后自动调用.inputfiltermanager而不是servicemanager直接获取它.配置示例:
'input_filters' => array(
'invokables' => array(
'glassfilter' => '\Application\Filter\GlassFilter',
),
),
Run Code Online (Sandbox Code Playgroud)
用法示例:
$glassfilter = $serviceLocator->get('InputFilterManager')->get('glassfilter');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3951 次 |
| 最近记录: |