Zend_Form and setElementFilters with Zend_Filter_StringTrim does not trim
PHP Code:
$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 Code:
<form action="" method="post">
<input type="text" name="customer_name" value=" Testing Trim " />
<input type="submit" />
</form>
Has anyone come across this issue and if so how do you fix it globaly for the setElementFilters method?
If I add the filter to the element it works fine. I just don't want to set the trim for each element.
I believe the problem is that you're setting filters before the element has actually been added to the form. Try changing the order, first add the element, then set filters:
$form->addElement($customerName);
$form->setElementFilters($filters);
Try this
$form->setElementFilters(array('StringTrim'));
精彩评论