Zend:提交带有大写值的表单

时间:2010-11-03 06:25:34

标签: php zend-framework forms

我想提交一个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' );似乎不起作用。它总是以用户输入的案例提交表格而不是小写。

如何强制表单将所有值转换为小写?

由于

2 个答案:

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