我有一个 Zend Framework 应用程序结构如下:
/application
/library
/Zend
/Core
/Filter
/MyFilter.php
/Validator
/MyValidator.php
我想将自定义过滤器和验证器放在各自的文件夹中,并在使用时自动加载它们。但是,我不知道如何最好地完成此任务。
我需要以这种方式使用 Zend_Filter_Input 的解决方案:
$filters = array(
'month' => 'Digits',
'account' => 'StringTrim',
'other' => 'MyFilter'
);
$validators = array(
'account' => 'Alpha',
'other' => 'MyValidator'
);
$inputFilter = new Zend_Filter_Input($filters, $validators);
我已经知道的:
- Core_Filter_MyFilter 实现 Zend_Filter_Interface
- 显然,过滤器和验证器已经在我的包含路径中。
最佳答案
我在 2007 年设计并实现了 Zend_Filter_Input
。
您可以添加新的类前缀来帮助加载自定义过滤器和验证器类。默认情况下,Zend_Filter_Input
搜索具有前缀"Zend_Filter"
和"Zend_Validate"
的类。试试这个:
$inputFilter->addNamespace('Core_Filter');
在运行 isValid()
或对象的其他方法之前。
或者,您也可以在选项数组中传递一个新的类前缀字符串,这是 Zend_Filter_Input
构造函数的第四个参数:
$options = array('inputNamespace' => 'Core_Filter');
$inputFilter = new Zend_Filter_Input($filters, $validators, $data, $options);
另见 documentation我为 Zend_Filter_Input
编写。
关于php - Zend Framework 中的自定义过滤器/验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/184996/