表单元素筛选器不起作用

时间:2013-11-07 09:26:25

标签: zend-framework zend-form zend-decorators

我想在文本表单元素中添加一个过滤器。代码是:

$this->addElement('text', 'product_amt', array(
    'filters' => array('Digits'),       
    'required' => true )
);

过滤器似乎不起作用,因为当我输入例如当我按下表单提交按钮时,“78abc”值在该字段中保持不变。此外,我得到“78abc”而不是“78”作为“product_amt”POST参数。

1 个答案:

答案 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