zend form - 如何获取除禁用元素之外的表单值

时间:2011-08-11 03:31:30

标签: zend-framework zend-form

我想使用zend_form来验证和过滤POST数据,并且某些表单字段是禁用元素, 但是当我使用$ form-> isValid($ post)过滤数据并使用$ form-> getValues()来获取过滤后的数据时,它会返回所有元素值(包括我没有的禁用元素值)想)。

如:

<form method="post" action="">
<input type="text" disabled="disabled" name="account_id" value="123456">

<input type="text"  name="name" value="">
<input type="text"  name="email" value="">

<input type="text" disabled="disabled" name="created_date" value="2011-06-12">
<input type="text" disabled="disabled" name="created_by" value="admin">
<input type="submit">
</form>

那么有没有办法摆脱禁用元素值? (因为有很多字段和禁用的元素,所以我不想手动修剪它们)

谢谢!

2 个答案:

答案 0 :(得分:4)

这是某种黑客行为。我们得到所有元素并遍历它。当我们看到一个元素被禁用时,我们可以跳过。

$somearray = array();
$elements = $form->getElements();
foreach ($elements as $key => $element) {
    //echo $key;
    if( $element->disabled ) {
        continue;
    }
    $somearray[$key] = $element->getValue();
}

希望这有帮助,或者你可以破解它;)。

答案 1 :(得分:2)

看起来这不是错误,而是验证表单的可接受工作流程。看到这个:http://framework.zend.com/issues/browse/ZF-6909

看起来接受的解决方案/技巧是使用

$form->isValidPartial($this->getRequest()->getPost())

而不是

$form->isValid($this->getRequest()->getPost())

isValidPartial仅测试帖子中存在的表单字段。禁用的元素不应该最终发布。