У меня есть простая форма, добавляющая к моему db следующие правила проверки. «Форма» находится в 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">') ?>
Кто-нибудь может понять, что я сделал неправильно, я пробовал все, что мог придумать.
Параметр var_dump validation_errors () дает
string '' (length=0)
edit: странно, если я обмениваю эти две строки вокруг, я получаю:
$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
Вам необходимо передать массив $data
в вашу модель. Все входные данные должны получать POST
с страницы VIEW
. Вы не показываете каких-либо конкретных ошибок, поэтому вам сложно диагностировать вашу проблему.
Убедитесь, что вы POST
все входы, подобные этому в вашей MODEL
:
`'first_name' => $this->input->post('first_name'),`
На ваш view
:
<?php echo validation_errors('<p class="msg msg-error">') ?>
По вашему view
измените это на следующее:
<p class="msg msg-error"><?php echo validation_errors(); ?></p>
Ошибка не связана с сеансом, но я не вижу, как вы загружаете библиотеку сеансов .
Я считаю, что проблема, на ваш взгляд, не в контроллере. Кажется, проблема в том, что ваш $ _POST пуст и нечего проверять.
Это кажется без ответа, надеюсь, это поможет другим.
Если это произойдет, попробуйте var_dump на $ _POST. Если пусто, убедитесь, что у вас есть
затем внутри убедитесь, что у вас есть ваши входы с свойством «name», а не «id»,
Надеюсь, это поможет кому угодно