【发布时间】:2009-11-08 19:52:18
【问题描述】:
如何为max_length 和min_length 规则设置错误消息。例如,如果我设置规则max_length[6],我希望显示错误消息
Max characters allowed: 5
【问题讨论】:
标签: codeigniter error-handling validation
如何为max_length 和min_length 规则设置错误消息。例如,如果我设置规则max_length[6],我希望显示错误消息
Max characters allowed: 5
【问题讨论】:
标签: codeigniter error-handling validation
我遇到了同样的问题,即使这篇文章很旧,也没有正确的答案。您只需在消息的第二位使用字符串占位符 %s。在文档 (http://codeigniter.com/user_guide/libraries/form_validation.html#settingerrors) 中有一个字段不为空的示例:
$this->form_validation->set_message('username_check', 'The %s field can not be the word "test"');
在那里,它使用 %s 占位符作为字段名称,但如果您修改“max_length”消息,将字段名称放在第一位,长度放在第二位,如下所示:
$this->form_validation->set_message('max_length', 'The field %s max length is %s');
它会起作用的。不是最好的解决方案,但对我有用。希望对你有帮助
【讨论】:
application/language/en/en_lang.php 我有这个:
$lang['name'] = "Name";
$lang['form_required'] = "is required.";
application/language/es/es_lang.php 我有这个:
$lang['name'] = "Nombre";
$lang['form_required'] = "es requiero.";
application/controllers/yourController.php 我有这个:
$this->form_validation->set_rules('name', $this->lang->line('name'), 'required|alpha|xss_clean');
$this->form_validation->set_message('required', '%s ' . $this->lang->line('form_required'));
希望对你有所帮助!
【讨论】:
@Daniel 是正确的。根据CodeIgniter's documentation,您可以像这样覆盖任何验证规则(例如“min_length”、“max_length”等)的默认错误消息:
$this->form_validation->set_message('validation_rule', 'Your message here');
因此,在您的示例中,您可以这样做:
$this->form_validation->set_message('max_length', 'Max characters allowed: 5');
只需包含您的验证规则所在的位置。
【讨论】:
gAMBOOKa,
创建一个“新”规则来检查 max_length
$this->form_validation->set_rules('username', 'Username', 'required|_max_length[12]');
对于方法..
function _max_length($val)
{
if (strlen($this->input->post('username')) > $val)
{
$this->form_validation->set_message('_max_length', 'Max characters allowed: 5')
return FALSE;
}
return TRUE;
}
将此作为新规则添加到您的控制器并像这样设置消息 ---^
【讨论】:
CodeIgniter 拥有所有框架中最好的文档之一。阅读他们网站上的用户指南或 CI 目录中的用户指南。
http://codeigniter.com/user_guide/libraries/form_validation.html#settingerrors
【讨论】:
看看system/language/english/form_validation_lang.php你会发现
$lang['max_length'] = "The %s field can not exceed %s characters in length.";
很容易通过复制来覆盖
application/language/english/form_validation_lang.php
并将其更改为您想要的字符串。 不要直接编辑system/中的文件,如果你升级CodeIgniter会被覆盖。
【讨论】:
无需添加新方法。您可以通过访问“max_length”规则将自定义消息设置为表单验证错误,如下所示。
$this->form_validation->set_rules('username', 'Username', 'required|min_length[5]', array('required' => 'Username is required.','max_length' => 'Max characters allowed: 5')
);
注意:这也适用于“min_length”规则。
【讨论】: