9

我有一个 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
  • 显然,过滤器和验证器已经在我的包含路径中。
4

1 回答 1

18

Zend_Filter_Input在 2007 年设计并实施。

您可以添加新的类前缀来帮助加载您的自定义过滤器和验证器类。默认情况下,Zend_Filter_Input搜索具有前缀"Zend_Filter"和的类"Zend_Validate"。试试这个:

$inputFilter->addNamespace('Core_Filter');

在运行isValid()对象或其他方法之前。

或者,您也可以在 options 数组中传递一个新的类前缀字符串,即Zend_Filter_Input构造函数的第四个参数:

$options = array('inputNamespace' => 'Core_Filter');
$inputFilter = new Zend_Filter_Input($filters, $validators, $data, $options);

另请参阅我为Zend_Filter_Input.

于 2008-10-08T22:46:17.227 回答