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

前端之家收集整理的这篇文章主要介绍了表单 – 如何为Codeigniter中的每个表单字段设置自定义错误消息?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用不同的错误消息设置codeigniter表单.

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

我需要:

  1. $this->form_validation->set_rules('name','First Name','required');
  2. $this->form_validation->set_message('name','required','Enter your Name');
  3. $this->form_validation->set_rules('second','Variables','required');
  4. $this->form_validation->set_message('second','The Variables are required');

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

可能我可以这样做:

调节器

  1. $this->form_validation->set_rules('name','Name','required|min_length[6]|max_length[12]');
  2. $this->form_validation->set_rules('second','required|min_length[3]|max_length[5]');
  3. $this->form_validation->set_message('required','required');
  4. $this->form_validation->set_message('min_length','short');
  5. $this->form_validation->set_message('max_length','long');

视图

  1. switch(form_error('name')) {
  2. case '<p>required</p>':
  3. echo 'Enter your Name';
  4. break;
  5. case '<p>short</p>':
  6. echo 'min length 6';
  7. break;
  8. case '<p>long</p>':
  9. echo 'min length 12';
  10. break;
  11.  
  12. }
  13.  
  14. switch(form_error('second')) {
  15. case '<p>required</p>':
  16. echo 'The Variables are required';
  17. break;
  18. case '<p>short</p>':
  19. echo 'min length 3';
  20. break;
  21. case '<p>long</p>':
  22. echo 'min length 5';
  23. break;
  24.  
  25. }

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

解决方法

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

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

  1. private function _custom_required($str,$func) {
  2. switch($func) {
  3. case 'name':
  4. $this->form_validation->set_message('custom_required','Enter your name');
  5. return (trim($str) == '') ? FALSE : TRUE;
  6. break;
  7. case 'second':
  8. $this->form_validation->set_message('custom_required','The variables are required');
  9. return (trim($str) == '') ? FALSE : TRUE;
  10. break;
  11. }
  12. }

和…

  1. private function _custom_check_length($str,$params) {
  2. $val = explode(',',$params);
  3.  
  4. $min = $val[0];
  5. $max = $val[1];
  6.  
  7. if(strlen($str) <= $max && strlen($str) >= $min) {
  8. return TRUE;
  9. } elseif(strlen($str) < $min) {
  10. $this->form_validation->set_message('custom_check_length','Min length ' . $min);
  11. return FALSE;
  12. } elseif(strlen($str) > $max) {
  13. $this->form_validation->set_message('custom_check_length','Max length ' . $max);
  14. return FALSE;
  15. }
  16. }

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

所以…

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

我希望以上有所帮助!!

猜你在找的HTML相关文章