当我尝试使用以下语句在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.
请让我离开陷阱。
答案 0 :(得分:0)
查看您的问题,您使用的语言文件似乎没有索引user.username。在用户语言文件中定义它,看看会发生什么。
以下是语言参考
并且
答案 1 :(得分:0)
我遇到同样的问题,而我正在搜索时发现这个answer提到了Codeigniter中的行,它在第673行附近构建了错误消息(位于文件系统/ libraries / 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);
}
它对我来说很好。 我知道编辑系统库不是最佳做法,但也许它会对你有帮助。
答案 2 :(得分:0)
试试这个:
$this->form_validation->set_message("is_unique", "{field} already registered. Try a different {field}");
答案 3 :(得分:-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;