2013-05-05 69 views
-1

我使用CodeIgniter的form validation及其每场规则,但在某些情况下验证成功运行后,我想手动添加每场错误消息并重新显示CodeiIgniter:手动设置每场消息

$this->form_validation->set_message('rule', 'Error Message'); 

而是一个函数可能看起来像这样的:

form_validation->add_message('field_name', 'my custom message') 
形式,其中消息将 form_error('field_name')

我不是在谈论设置自定义每条规则的错误信息显示

+0

挖掘代码我发现以这种方式直接访问消息数组的方式:form_validation - > _ field_data ['field_name'] ['error'] =“我的自定义消息”。不那么优雅.. – fustaki 2013-05-05 13:55:11

+0

所以你解决了它? – SomeShinyObject 2013-05-05 13:56:18

+0

你在那里保存那个自定义的错误信息......... – 2013-05-05 13:59:09

回答

1

您必须扩展form_validation,_field_data属性受到保护,因此您无法在其课程或其子类之外访问该属性。

$this->form_validation->set_message('required', 'some message')不会工作太多,因为CI只会在运行验证时检查此数据,并且它将与验证规则相关联。

库/ MY_Form_validation.php

class MY_Form_validation extends CI_Form_validation { 

    public function __construct() { 
     parent::__construct(); 
    } 

    public function add_message($field, $message) { 
     //this field was validated without error 
     if(isset($this->_field_data[$field]) AND 
     (!isset($this->_field_data[$field]['error']) OR !$this->_field_data[$field]['error'])) 

      $this->_field_data[$field]['error'] = $message; 
    } 
} 

$this->form_validation->add_message('field1', 'message for field1'); 
echo form_error('field1'); 

注: 消息将不会在validation_errors()可用。 要这么做,请添加$this->_error_array[] = $message

+0

谢谢@lighta,在我的CodeIgniter _field_data数组版本中仍然是公开的,而在当前的2.1.3版本中已被保护 – fustaki 2013-05-05 16:26:00

+0

欢迎您。下次注意该版本,不要让CI 3.0来更新您的CI应用程序。 – Aurel 2013-05-05 16:45:33