【问题标题】:CodeIgniter: set_message for max_length[x]CodeIgniter:设置 max_length[x] 的消息
【发布时间】:2009-11-08 19:52:18
【问题描述】:

如何为max_length 和min_length 规则设置错误消息。例如,如果我设置规则max_length[6],我希望显示错误消息 Max characters allowed: 5

【问题讨论】:

    标签: codeigniter error-handling validation


    【解决方案1】:

    我遇到了同样的问题,即使这篇文章很旧,也没有正确的答案。您只需在消息的第二位使用字符串占位符 %s。在文档 (http://codeigniter.com/user_guide/libraries/form_validation.html#settingerrors) 中有一个字段不为空的示例:

    $this->form_validation->set_message('username_check', 'The %s field can not be the word "test"');
    

    在那里,它使用 %s 占位符作为字段名称,但如果您修改“max_length”消息,将字段名称放在第一位,长度放在第二位,如下所示:

    $this->form_validation->set_message('max_length', 'The field %s max length is %s');
    

    它会起作用的。不是最好的解决方案,但对我有用。希望对你有帮助

    【讨论】:

      【解决方案2】:

      application/language/en/en_lang.php 我有这个:

      $lang['name'] = "Name";
      $lang['form_required'] = "is required.";
      

      application/language/es/es_lang.php 我有这个:

      $lang['name'] = "Nombre";
      $lang['form_required'] = "es requiero.";
      

      application/controllers/yourController.php 我有这个:

      $this->form_validation->set_rules('name', $this->lang->line('name'), 'required|alpha|xss_clean');
      
      $this->form_validation->set_message('required', '%s ' . $this->lang->line('form_required'));
      

      希望对你有所帮助!

      【讨论】:

        【解决方案3】:

        @Daniel 是正确的。根据CodeIgniter's documentation,您可以像这样覆盖任何验证规则(例如“min_length”、“max_length”等)的默认错误消息:

        $this->form_validation->set_message('validation_rule', 'Your message here');
        

        因此,在您的示例中,您可以这样做:

        $this->form_validation->set_message('max_length', 'Max characters allowed: 5');
        

        只需包含您的验证规则所在的位置。

        【讨论】:

        • 我知道要覆盖默认消息,但是如何将长度参数合并到新消息中? 5 在这种情况下。我有多个长度不同的字段,我不想为每个字段写一条消息。
        【解决方案4】:

        gAMBOOKa,

        创建一个“新”规则来检查 max_length

        $this->form_validation->set_rules('username', 'Username', 'required|_max_length[12]');
        

        对于方法..

        function _max_length($val)
            {
                if (strlen($this->input->post('username')) > $val)
                {
                            $this->form_validation->set_message('_max_length', 'Max characters allowed: 5')
                    return FALSE;
                }
        
                return TRUE;
            }
        

        将此作为新规则添加到您的控制器并像这样设置消息 ---^

        【讨论】:

          【解决方案5】:

          CodeIgniter 拥有所有框架中最好的文档之一。阅读他们网站上的用户指南或 CI 目录中的用户指南。

          http://codeigniter.com/user_guide/libraries/form_validation.html#settingerrors

          【讨论】:

            【解决方案6】:

            看看system/language/english/form_validation_lang.php你会发现

            $lang['max_length'] = "The %s field can not exceed %s characters in length.";
            

            很容易通过复制来覆盖

            application/language/english/form_validation_lang.php
            

            并将其更改为您想要的字符串。 不要直接编辑system/中的文件,如果你升级CodeIgniter会被覆盖。

            【讨论】:

              【解决方案7】:

              无需添加新方法。您可以通过访问“max_length”规则将自定义消息设置为表单验证错误,如下所示。

              $this->form_validation->set_rules('username', 'Username', 'required|min_length[5]', array('required' => 'Username is required.','max_length' => 'Max characters allowed: 5')
              );
              

              注意:这也适用于“min_length”规则。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2012-05-12
                • 2017-06-29
                • 1970-01-01
                • 2012-01-19
                • 1970-01-01
                • 2023-04-03
                • 2015-03-21
                • 2019-02-27
                相关资源
                最近更新 更多