我想在文本表单元素中添加一个过滤器。代码是:
$this->addElement('text', 'product_amt', array(
'filters' => array('Digits'),
'required' => true )
);
过滤器似乎不起作用,因为当我输入例如当我按下表单提交按钮时,“78abc”值在该字段中保持不变。此外,我得到“78abc”而不是“78”作为“product_amt”POST参数。
答案 0 :(得分:0)
来自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
?