0

我在为每个规则的表单验证设置自定义错误消息时遇到问题。

我已经从这里的篝火文档中尝试过

这是我的模块模型的一些代码

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

4

2 回答 2

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
            }
于 2015-02-13T07:57:19.503 回答
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;
}

如果您还有其他问题以及错误是否仍然存在,请告诉我。干杯!

于 2015-02-13T06:38:21.817 回答