【问题标题】:CodeIgniter set_message()CodeIgniter set_message()
【发布时间】:2013-02-03 11:03:14
【问题描述】:

当我尝试使用以下语句在 CodeIgniter 中的 from_validation 库下为错误设置自定义消息时..

$this->form_validation->set_message("is_unique", "%s already registered. Try a different %s");

我得到的是Username already registered. Try a different users.username,而不是Username already registered. Try a different Username

虽然文档说If you include %s in your error string, it will be replaced with the "human" name you used for your field when you set your rules.

请让我摆脱困境。

【问题讨论】:

    标签: codeigniter validation


    【解决方案1】:

    查看您的问题,您使用的语言文件似乎没有索引 user.username。在用户语言文件中定义它,看看会发生什么。

    这里是语言的参考

    Codeigniter Language Class

    还有

    Codeigntier Language Helper

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题,在搜索时我发现了这个answer,它提到了 Codeigniter 中在第 673 行附近构建错误消息的行(位于文件系统/库/form_validation.php 中):

          // Build the error message
      $message = sprintf($line, $this->_translate_fieldname($row['label']), $param);
      

      我将其编辑为:

      // Build the error message
      if($rule == 'is_unique') {                                      //my code here
      
          $vars_num = substr_count($line, '%s');                      //my code here
          for($i = 0; $i < $vars_num; $i++){                          //my code here
              $params[] = $this->_translate_fieldname($row['label']); //my code here
          }                                                           //my code here
          $message = vsprintf($line, $params);                        //my code here
      
      } else {                                                        //my code here
      
          $message = sprintf($line, $this->_translate_fieldname($row['label']), $param);
      
      }   
      

      它对我来说很好用。 我知道编辑系统库不是最佳做法,但也许它会对您有所帮助。

      【讨论】:

        【解决方案3】:

        试试这个:

        $this->form_validation->set_message("is_unique", "{field} already registered. Try a different {field}");
        

        【讨论】:

          【解决方案4】:

          您可以使用 codigniter 的消息库设置自定义消息

          例如 在这样的模型编码中

          if(duplicate_user_name ==true){
              $this->messages->add('$user already registered. Try a different $user ', 'error');
          }
          

          并使用以下视图打印此消息

          $messages = $this->messages->get(); 
                      if (is_array($messages)):
                          foreach ($messages as $type => $msgs):
                              if (count($msgs > 0)):
                                  foreach ($msgs as $message):
                                      echo ('<div class="' .  $type .'">' . $message . '</div>');
                                 endforeach;
                             endif;
                          endforeach;
                      endif;
          

          【讨论】:

          • 这是我知道的最佳答案,请参阅编辑后的答案了解更多信息
          猜你喜欢
          • 1970-01-01
          • 2014-03-18
          • 2017-09-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-21
          相关资源
          最近更新 更多