【问题标题】:Form's element filter doesnt work表单元素过滤器不起作用
【发布时间】:2013-11-07 09:26:24
【问题描述】:
我想为文本表单元素添加一个过滤器。代码是:
$this->addElement('text', 'product_amt', array(
'filters' => array('Digits'),
'required' => true )
);
过滤器似乎不起作用,因为当我输入例如当我按下表单提交按钮时,“78abc”字段中的值保持不变。此外,我得到“78abc”而不是“78”作为“product_amt”POST 参数。
【问题讨论】:
标签:
zend-framework
zend-form
zend-decorators
【解决方案1】:
来自 POST 的值将是用户在输入字段中输入的值。
当您在表单对象上调用 isValid 时应用过滤器:
$form = new My_Form(); // your form object
if( $form->isValid( $this->getRequest()->getPost() ) ) { //we pass in the POST data into the isValid function
//Valid data - do something
} else {
//data is not valid - do something else
}
在isValid 函数期间,每个元素的值会根据需要进行过滤(在这种情况下仅过滤为数字),然后在调用元素的isValid 函数之前将其设置为元素的值以确保值通过任何验证(在本例中为 'isRequired',因为您已将 'required' 设置为 true)。
您是否在表单上致电isValid?