为Codeigniter中的不同字段设置自定义验证消息

时间:2014-07-28 09:03:08

标签: php codeigniter validation

我正在开发已经构建的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语句。)

1 个答案:

答案 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');

显然,请使用元素名称替换下拉列表。

希望这有帮助!