2013-05-05 19 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