我想提交一个zend表单但是使用小写值。无论用户使用何种用例,我都希望将表单值作为小写。我正在创建这样的形式。
$elements = array();
$element = $this->CreateElement('text', 'LastName');
$element->setLabel('Last Name');
$element->addFilter( 'StringToLower' );
$elements[] = $element;
$element = $this->CreateElement('text', 'FirstName');
$element->setLabel('First Name');
$element->addFilter( 'StringToLower' );
$elements[] = $element;
$this->addElements($elements);
获得这样的价值观:
$request = $this->getRequest();
$values = $request->getParams();
上面的表单是成功提交表单值,但$element->addFilter( 'StringToLower' );
似乎不起作用。它总是以用户输入的案例提交表格而不是小写。
如何强制表单将所有值转换为小写?
由于
答案 0 :(得分:4)
您没有描述如何获得结果值,但这是正确的方法:
$values = $form->getValues()
此外,编写相同代码的更方便的方法可能是:
$this->addElement('text', 'LastName', array(
'label' => 'Last Name',
'filters' => array('StringToLower')
));
可能的完整解决方法之一可能是:
if ($this->_request->isPost() && $form->isValid($this->_request->getPost())) {
$values = $form->getValues();
}
答案 1 :(得分:1)
您是否使用$ form-> getValues()调用$ form-> isValid()?
除非您还有客户端验证/过滤,否则表单数据不会自行过滤。$form = new MyForm();
if($form->isValid($this->getRequest()->getPost()){
$filteredValues = $form->getValues();
} else {
// validation failed
}