0

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

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

而不是得到Username already registered. Try a different Username我得到Username already registered. Try a different users.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.

请让我脱离陷阱。

4

4 回答 4

0

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

这是对语言的参考

Codeigniter 语言类

Codeigntier 语言助手

于 2013-02-03T12:32:04.387 回答
0

我遇到了同样的问题,当我搜索时,我发现了这个答案,它提到了 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);

}   

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

于 2013-09-02T23:35:11.967 回答
0

尝试这个:

$this->form_validation->set_message("is_unique", "{field} already registered. Try a different {field}");
于 2017-08-18T07:26:53.527 回答
-2

您可以使用 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;
于 2013-02-03T11:16:46.963 回答