我想使用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>
那么有没有办法摆脱禁用元素值? (因为有很多字段和禁用的元素,所以我不想手动修剪它们)
谢谢!
答案 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仅测试帖子中存在的表单字段。禁用的元素不应该最终发布。