我正在开发已经构建的codeigniter应用程序。我正致力于增强功能。其中一项增强功能是更改验证消息。所以我检查了验证消息是通过codeigniter中的CI_Form_validation库驱动的。我想管理使用“set_message”设置自定义消息。
$this->form_validation->set_message('required', 'Please enter %s.');
这将触发值为空的所有字段。这很好。但我在应用程序中选择了很少的字段和单选按钮。对于那些消息应该从“请输入%s”更改为“请选择%s”。我尝试了“How can I setup custom error messages for each form field in Codeigniter?”
中提到的回调方法我也尝试过以下链接中提到的方法
1)“https://github.com/EllisLab/CodeIgniter/wiki/Custom-Validation-Errors-per-Field”。
2)“http://www.witheringtree.com/2011/09/custom-codeigniter-validation-methods/”。
有没有办法为不同的字段设置不同的自定义消息?如果是这样,请给我建议。应用程序中有一个名为MY_Form_validation的文件(在第二个链接中提到),带有一些自定义函数。除了我编写的自定义函数之外,自定义验证在该文件中触发。 (我知道你可能认为我编写了一个错误的代码!但是在该函数中只有简单的echo语句。只是为了测试我只放了一个echo语句。)
答案 0 :(得分:1)
你无法创建一个通用函数来执行此操作,因为codeigniter无法知道信息是如何发布的,因为它只是将其作为数组接收。
您可以做的是在应用程序/库中创建MY_Form_validation.php
class MY_Form_validation extends CI_Form_validation
{
public function required_select($val)
{
if ($this->required($val) === FALSE) {
$this->set_message('required_select', 'Please select %s');
return FALSE;
}
return TRUE;
}
}
然后在创建表单验证规则时
$this->form_validation->set_rules('dropdown', 'Dropdown', 'required_select');
显然,请使用元素名称替换下拉列表。
希望这有帮助!