表单 – 如何为Codeigniter中的每个表单字段设置自定义错误消息?

表单 – 如何为Codeigniter中的每个表单字段设置自定义错误消息?,第1张

概述我正在尝试使用不同的错误消息设置codeigniter表单. set_message(rule,msg)正在为整个表单设置一条消息. 我需要: $this->form_validation->set_rules('name', 'First Name', 'required');$this->form_validation->set_message('name', 'required', 'En 我正在尝试使用不同的错误消息设置codeigniter表单.

set_message(rule,msg)正在为整个表单设置一条消息.

我需要:

$this->form_valIDation->set_rules('name','First name','required');$this->form_valIDation->set_message('name','required','Enter your name');    $this->form_valIDation->set_rules('second','Variables','required');$this->form_valIDation->set_message('second','The Variables are required');

在这种情况下,将%s添加到消息字符串中没有帮助,因为消息必须完全不同.

可能我可以这样做:

调节器

$this->form_valIDation->set_rules('name','name','required|min_length[6]|max_length[12]');$this->form_valIDation->set_rules('second','required|min_length[3]|max_length[5]');$this->form_valIDation->set_message('required','required');$this->form_valIDation->set_message('min_length','short');$this->form_valIDation->set_message('max_length','long');

视图

switch(form_error('name')) {    case '<p>required</p>':        echo 'Enter your name';        break;    case '<p>short</p>':        echo 'min length 6';        break;    case '<p>long</p>':        echo 'min length 12';        break;}switch(form_error('second')) {    case '<p>required</p>':        echo 'The Variables are required';        break;    case '<p>short</p>':        echo 'min length 3';        break;    case '<p>long</p>':        echo 'min length 5';        break;}

但是,有没有更聪明的方法呢?

解决方法 我认为更聪明的方法是使用Codeigniter的回调功能(类似于下面的内容).以下工作,但可能更精简它.如果不出意外,这是一个起点.

创建两个回调函数(我将这些命名为custom_required和custom_check_length)并将它们放在控制器的底部(或者您认为必要的地方).

private function _custom_required($str,$func) {        switch($func) {            case 'name':                $this->form_valIDation->set_message('custom_required','Enter your name');                return (trim($str) == '') ? FALSE : TRUE;                break;            case 'second':                $this->form_valIDation->set_message('custom_required','The variables are required');                return (trim($str) == '') ? FALSE : TRUE;                break;        }    }

和…

private function _custom_check_length($str,$params) {        $val = explode(',',$params);        $min = $val[0];        $max = $val[1];        if(strlen($str) <= $max && strlen($str) >= $min) {            return TRUE;        } elseif(strlen($str) < $min) {            $this->form_valIDation->set_message('custom_check_length','Min length ' . $min);            return FALSE;        } elseif(strlen($str) > $max) {            $this->form_valIDation->set_message('custom_check_length','Max length ' . $max);            return FALSE;        }    }

这两个函数负责表单验证的set_message方面.要设置规则,您只需要通过在函数名前加上callback_来调用这两个函数.

所以…

$this->form_valIDation->set_rules('name','callback__custom_required[name]|callback__custom_check_length[6,12]');$this->form_valIDation->set_rules('second','Second','callback__custom_required[second]|callback__custom_check_length[3,5]');

我希望以上有所帮助!!

总结

以上是内存溢出为你收集整理的表单 – 如何为Codeigniter中的每个表单字段设置自定义错误消息?全部内容,希望文章能够帮你解决表单 – 如何为Codeigniter中的每个表单字段设置自定义错误消息?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1107891.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存