2011-01-12 2 views
0

PHP код:Zend_Form и setElementFilters с Zend_Filter_StringTrim не подрезать

$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> 

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

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

ответ

3

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

$form->addElement($customerName);  
$form->setElementFilters($filters); 
+0

Спасибо Vika. Это сработало. Вы думаете, что это не имеет значения. –

1

Попробуйте

$form->setElementFilters(array('StringTrim')); 
+0

Пробовал это, и это не изменило ситуацию. Спасибо хоть. –

Смежные вопросы