Zend 表单验证

发布于 2024-08-10 21:08:23 字数 677 浏览 4 评论 0原文

我正在使用 Zend Form 创建动态表单。

我也有 Zend Form 验证。

尝试动态删除验证,但没有取得任何成功。

你能帮我删除 Zend Validation 吗?

下面是我的删除验证代码:

$toRemValArray = array();
$toRemValArray[0] = 'ele_4af42ceac7810';

if(isset($_POST['btnPost_x'])){                 
    if ($form->isValid($_POST)) {
        $allElements = $form->getElements();
        foreach($allElements as $val){
            if(in_array('ele_4af42ceac7810',$toRemValArray)){
                $value = $form->getElement($val->getName());
                $value->removeValidator('ele_4af42ceac7810');
            }
        }
    }
}

让我知道我的代码是否有任何问题

谢谢 穆罕默德·塔雷克

I am using Zend Form to create dynamic form.

I have Zend Form validation too.

Trying to remove Validation dynamically, but not getting any success.

Can you plz help me to remove Zend Validation.

Bellow is my code for remove validation :

$toRemValArray = array();
$toRemValArray[0] = 'ele_4af42ceac7810';

if(isset($_POST['btnPost_x'])){                 
    if ($form->isValid($_POST)) {
        $allElements = $form->getElements();
        foreach($allElements as $val){
            if(in_array('ele_4af42ceac7810',$toRemValArray)){
                $value = $form->getElement($val->getName());
                $value->removeValidator('ele_4af42ceac7810');
            }
        }
    }
}

Let me know whether my code is having any issue

Thanks
Mohammad Tareque

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

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

发布评论

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

评论(3

原野 2024-08-17 21:08:23

您应该调用$form->isValid()之前删除验证器。

You should remove the validator BEFORE calling $form->isValid().

森林很绿却致人迷途 2024-08-17 21:08:23

我想出的解决方案是重写表单类上的 isValid 方法,并删除密码字段上的验证器(如果密码字段留空):

public function isValid($data)
{
    if (empty($data['password'])) {
        $this->form
             ->getElement('password')
             ->clearValidators();

        $this->form
             ->getElement('password_confirm')
             ->clearValidators();
    }
    return $this->form->isValid($data);
}

$this->form指的是通过组合扩展的表单,该解决方案在扩展 Zend Form 后代类时也有效。

附带说明一下,如果密码字段是必填,则此解决方案将不起作用

The solution I came up with was overriding the isValid method on my form class and removing the validator on the password field if it was left blank:

public function isValid($data)
{
    if (empty($data['password'])) {
        $this->form
             ->getElement('password')
             ->clearValidators();

        $this->form
             ->getElement('password_confirm')
             ->clearValidators();
    }
    return $this->form->isValid($data);
}

The $this->form is referred to the form being extended by composition, the solution works when extending a Zend Form descendent class as well.

Just a side note, this solution won't work if the password field is required

回眸一笑 2024-08-17 21:08:23

您的代码正在按名称删除验证器,

$value->removeValidator('ele_4af42ceac7810');

这通常类似于 NotEmptyRegex,而不是元素名称。

也许您想要

$value->clearValidators();

此外,+1 Ismael - 您应该在调用 $form->isValid() 之前将其删除

Your code is removing a validator by name

$value->removeValidator('ele_4af42ceac7810');

This is typically something like NotEmpty or Regex as opposed to the element name.

Maybe you want

$value->clearValidators();

Also, +1 Ismael - you should remove it prior to calling $form->isValid()

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