Функция Zend_Form_Element::addFilters()
может помочь вам немного понять этот процесс.
Переданный массив содержит один фильтр на элемент. Если этот элемент является строкой или экземпляром Zend_Filter_Interface
, он передает его в addFilter () без 'options'
Если элемент является массивом, первый элемент которого становится именем фильтра, второй элемент становится параметрами. Массив опций используется в _loadFilter (), который передает массив опций в конструктор фильтра. Пример использования фильтра PregReplace:
// Zend_Filter_PregReplace::__construct($matchPattern = null, $replacement = null)
$this->addElement('textarea', 'entry', array(
'filters' => array(
array('PregReplace', array('/test/', 'passed'))
),
);
// equivalent to:
$this->addElement('textarea', 'entry', array(
'filters' => array(
new Zend_Filter_PregReplace('/test', 'passed');
),
);
Если вы хотите передать массив в качестве первого аргумента, вам нужно заключить его в другой массив:
$this->addElement('textarea', 'entry', array(
'filters'=>array(
array('MyFilter', array(array(
'option1'=>'test',
'option2'=>'test',
))),
),
);