为表单验证 - 篝火设置每条规则的自定义错误消息

时间:2015-02-13 05:06:23

标签: php codeigniter bonfire

我无法在每个规则的表单验证上设置自定义错误消息。

我在Bonfire文档here

中尝试过

以下是我的模块模型的一些代码

class Content_management_system_model extends BF_Model {

    protected $table_name = 'article';
    protected $key = 'id';

    // be updating a portion of the data.
    protected $validation_rules = array(
         array(
            'field' => 'article_alias',
            'label' => 'lang:content_management_system_article_alias',
            'rules' => 'unique[article.article_alias,article.id]',
            'errors' => array(
                'unique' => 'This is my custom error',
            ),
        ),

此处规则是在插入

时从管理控制器设置的
private function save_content_management_system($type = 'insert', $id = 0) {

        // Validate the data
        $this->form_validation->set_rules($this->content_management_system_model->get_validation_rules());
        if ($this->form_validation->run() === false) {
            return false;
        }

但它始终显示默认消息The value in "Article Alias" is already being used.

根据上述链接中的文档,它应显示错误This is my custom error

2 个答案:

答案 0 :(得分:1)

使用回调函数:

$this->form_validation->set_rules('current_pswd', 'Current Password', 'trim|required|callback_alias_exist_check');


public function alias_exist_check($str)
            {
>>Put your code here
            }

答案 1 :(得分:0)

我注意到在$ validation_rules数组的末尾,它以逗号(,)而不是分号(;)结束。还请删除嵌套数组的逗号,因为在第一个嵌套数组之后没有其他数组。

删除逗号(,)并替换为分号(;)

protected $validation_rules = array(
         array(
            'field' => 'article_alias',
            'label' => 'lang:content_management_system_article_alias',
            'rules' => 'unique[article.article_alias,article.id]',
            'errors' => array(
                'unique' => 'This is my custom error',
            )
        );

另外,你的

if ($this->form_validation->run() **===** false) {
            return false;
        }

有3'等于'运营商,这是不必要的。使其仅为2'等于'操作

另一个建议:

由于您正在调用 content_management_system_model 的函数 get_validation_rules ,为什么不创建函数 get_validation_rules()并在其中创建一个数组该函数然后返回数组而不是将数组赋值给受保护的变量?

function get_validation_rules()
{
    $validation_rules = array(
         'field'  => 'article_alias',
         'label'  => 'lang:content_management_system_article_alias',
         'rules'  => array(
              'unique'   => 'This is my custom error',
          )   
    );
    return $validation_rules;
}

如果您有其他问题并且错误仍然存​​在,请与我们联系。干杯!