CodeIgniter设置_消息()
当我试图使用以下语句在CodeIgniter中的from_validation library下设置错误的自定义消息时CodeIgniter设置_消息(),codeigniter,validation,Codeigniter,Validation,当我试图使用以下语句在CodeIgniter中的from_validation library下设置错误的自定义消息时 $this->form_validation->set_message("is_unique", "%s already registered. Try a different %s"); 而不是获取已注册的用户名。请尝试其他用户名我已注册了用户名。请尝试其他用户。用户名 文档中说,如果在错误字符串中包含%s,则当您设置规则时,它将替换为字段中使用的“人类”名称。
$this->form_validation->set_message("is_unique", "%s already registered. Try a different %s");
而不是获取已注册的用户名。请尝试其他用户名
我已注册了用户名。请尝试其他用户。用户名
文档中说,如果在错误字符串中包含%s,则当您设置规则时,它将替换为字段中使用的“人类”名称。
请让我离开陷阱。您可以使用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;
$messages=$this->messages->get();
如果(是_数组($messages)):
foreach($type=>$msgs的消息):
如果(计数($msgs>0)):
foreach($msgs作为$message):
回声(“.$message.”);
endforeach;
endif;
endforeach;
endif;
查看您的问题,您使用的语言文件似乎没有索引user.username。在用户语言文件中定义它并查看发生了什么
这里是对语言的引用
及
我遇到了同样的问题,在搜索过程中,我发现了这个问题,其中提到了Codeigniter中构建错误消息的那一行(位于文件系统/libraries/form_validation.php中),靠近第673行:
// 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);
}
//生成错误消息
如果($rule=='is_unique'){//我的代码在这里
$vars_num=substr_count($line,'%s');//这里是我的代码
对于($i=0;$i<$vars_num;$i++){//我的代码在这里
$params[]=$this->_translate_fieldname($row['label']);//这里是我的代码
}//这里是我的代码
$message=vsprintf($line,$params);//这里是我的代码
}else{//我的代码在这里
$message=sprintf($line,$this->_translate_fieldname($row['label']),$param);
}
这对我来说很好。
我知道编辑系统库不是最佳做法,但可能会对您有所帮助。尝试以下方法:
$this->form_validation->set_message("is_unique", "{field} already registered. Try a different {field}");
这是我知道的最好的答案,更多信息请参见编辑后的答案