以下の検証ルールを使用して、データベースに追加する簡単なフォームがあります。「フォーム」は autoload.php にあります。
検証ルールのいずれかが壊れている場合は常に、ページにエラー出力が表示されません。壊れていない場合、フォームは期待どおりに通過します。
これが私のコントローラー機能です
public function add()
{
$this->load->library('form_validation');
$this->load->library('layout');
// field name, error message, validation rules
$this->form_validation->set_rules('type', 'Type', 'required|xss_clean');
$this->form_validation->set_rules('title_type', 'Title type', 'required|xss_clean');
$this->form_validation->set_rules('first_name', 'First name', 'trim|required|min_length[1]|max_length[150]|xss_clean');
$this->form_validation->set_rules('surname', 'Surname', 'trim|required|min_length[1]|max_length[150]|xss_clean');
$this->form_validation->set_rules('job_title', 'Job title', 'trim|min_length[5]|max_length[300]required|xss_clean');
$this->form_validation->set_rules('office_number', 'Office number', 'trim|min_length[2]|max_length[11]|xss_clean');
$this->form_validation->set_rules('telephone', 'Telephone', 'trim|numeric|xss_clean');
$this->form_validation->set_rules('email', 'Email', 'trim|valid_email|xss_clean');
$this->form_validation->set_rules('website', 'Website', 'trim|prep_url|xss_clean');
$this->form_validation->set_rules('background', 'Background', 'trim|xss_clean');
$data = array(
'title' => 'Add staff member'
);
if ($this->form_validation->run() == FALSE) { //Was errors
$this->session->set_flashdata('message','You missed some details, please try again.');
$this->layout->load('default', 'add_person', $data);
} else {
$this->people_model->add_person();
$this->layout->load('default', 'added_person', $data);
}
} //add
そして、私のフォームビューには
<?php echo validation_errors('<p class="msg msg-error">') ?>
誰が私が間違ったことをしたかを見ることができますか、私は考えられるすべてを試しました。
validation_errors() の var_dump は、
string '' (length=0)
編集:奇妙なことに、これらの2行を入れ替えると、次のようになります:
$this->load->library('form_validation');
$this->load->library('layout'); //lib code http://pastebin.com/K1rBV512
Message: Undefined property: People::$form_validation
Filename: controllers/people.php
Line Number: 27