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

发布于 2024-11-29 03:36:36 字数 674 浏览 2 评论 0原文

我想使用 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>

那么有什么方法可以消除禁用元素的值吗? (因为有很多字段和禁用元素,所以我不想手动修剪它们)

谢谢!

i want to use zend_form to validate and filter the POST data,and some form fields are disabled element,
but when i use $form->isValid($post) filtering the data and use $form->getValues() to get the filtered data, it returns all the elements value (including the disabled elements value which i don't want).

such as :

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

so is there any way to get rid of the disables elements value ?
(because there are many fields and disabled elements ,so i don't want to trim them manually)

thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梨涡 2024-12-06 03:36:36

这是某种黑客行为。我们获取所有元素并迭代它。当我们看到某个元素被禁用时,我们可以跳过。

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

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

This is some sort of a hack. We get all elements and iterate through it. When we see an element is disabled we can skip.

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

Hope this helps, or you can hack on it ;) .

暗藏城府 2024-12-06 03:36:36

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

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

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

isValidPartial代替

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

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

It looks like this is not a bug, but an accepted workflow for validating forms. see this: http://framework.zend.com/issues/browse/ZF-6909

it looks like the accepted solution/trick is to use

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

instead of

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

isValidPartial only tests the form fields that are present in the post. disabled elements should not end up posted.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文