Zend_Form и setElementFilters с Zend_Filter_StringTrim не обрезаются - PullRequest
0 голосов
/ 12 января 2011

Код PHP:

$form = new Zend_Form();
$filters = array(new Zend_Filter_StringTrim());
$form->setElementFilters($filters); // <-- ISSUE

$customerName = new Zend_Form_Element_Text('customer_name');
$customerName->setRequired();
$form->addElement($customerName);

$data = $this->_getAllParams();
if ($form->isValid($data)) {
    var_dump($form->getValue('customer_name'));
    // Should be "Testing Trim"
    // Actual result is " Testing Trim "
} else {
    exit('Failed');
}

Код HTML:

<form action="" method="post">
    <input type="text" name="customer_name" value=" Testing Trim " />
    <input type="submit" />
</form>

Кто-нибудь сталкивался с этой проблемой, и если да, то как вы решаете ее глобально для метода setElementFilters?

Если я добавлю фильтр к элементу, он будет работать нормально.Я просто не хочу устанавливать обрезку для каждого элемента.

Ответы [ 2 ]

3 голосов
/ 12 января 2011

Я считаю, что проблема в том, что вы устанавливаете фильтры до того, как элемент действительно будет добавлен в форму.Попробуйте изменить порядок, сначала добавьте элемент, а затем установите фильтры:

$form->addElement($customerName);    
$form->setElementFilters($filters);
1 голос
/ 12 января 2011

Попробуйте это

 $form->setElementFilters(array('StringTrim'));
...