【问题标题】:Showing error in CodeIgniter Form Validation Class only if certain condition meet仅当满足特定条件时才在 CodeIgniter 表单验证类中显示错误
【发布时间】:2010-02-01 12:20:35
【问题描述】:

首先,我要为我糟糕的英语道歉。

假设我在控制器中有这样的功能:

function confirm()
    {
        $this->load->helper(array('form', 'url'));
        $this->load->library('form_validation');

        $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email|exist[member.email]');
        $this->form_validation->set_rules('secretKey','Secret Key', 'required|callback_secret_check');

        $this->form_validation->set_message('exist',"Email don't exist");
        $this->form_validation->set_message('secret_check','Invalid confirmation code');

        if ($this->form_validation->run() == FALSE)
          {
            // if error, show form and the error msg
            $this->view->full_render('user_confirm') ;
          } else {
            // if all ok
            echo "success" ;
          }
    }

简而言之,此功能用于使用确认码验证新用户电子邮件。就像我们在任何需要注册的网站上找到的一样。我做了这个功能,以防某些用户更喜欢直接使用确认表单而不是使用确认 url 提交他的确认码(我们将确认 url 和确认码都发送到他的电子邮件)

仅供参考,“存在”规则是我自己通过扩展表单类创建的规则,以检查提交的电子邮件是否真的存在。对于“callback_secret_check”规则,我创建回调函数(不是像第一条规则那样扩展表单验证类)来检查用户提交的确认码是否有效。

现在,假设我有用户电子邮件“example@example.com”,确认码为“12345”。如果他提交代码为“22323”的“example@example.com”,则系统将显示错误消息:

  • 确认码无效

这种情况没问题。

但是,如果有人提交“this.is.not.exist@example.com”和任何确认码,系统会显示错误信息

  • 电子邮件不存在
  • 确认码无效

我想要的只是

  • 电子邮件不存在

没有显示“无效的确认码”,因为如果电子邮件甚至不存在,我认为我们不需要告诉任何有关确认码的信息。有什么线索吗?

感谢您的帮助。

【问题讨论】:

    标签: codeigniter validation


    【解决方案1】:

    在这种情况下,请勿将无效的确认码设置为required。如果该字段只有 2 个,您可以在一个简单的if 中检查它。并非所有情况都需要form_validation

    【讨论】:

    • 哇.. 成功了! (删除“必需”技巧)。你能给我解释一下吗?我很快就会接受你的回答。无论如何,谢谢你的提示。
    • 好的,这是一种解决方法,但是如果您需要验证 100 个字段怎么办。然后所有人都用if??
    • @wildanr, required 使该字段必须具有值,如果没有,则引发错误。由于现在第二个字段不再required,你必须自己处理。这就是为什么我建议你用简单的if 来做这件事,你只需要注意2个字段,而且还需要特殊处理。 @Natrium,我写“在那种情况下”。另外,如果有 100 个字段,那么您一定做错了,因为作为用户,我不想填写 100 个字段的表单。我做过的单一表单中的最大字段数从未超过 20 个字段。如果您需要 100 个字段,请尝试将其拆分为多个步骤。
    猜你喜欢
    • 1970-01-01
    • 2022-11-24
    • 2011-05-13
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 2018-09-24
    • 2020-01-10
    • 1970-01-01
    相关资源
    最近更新 更多