Возможный дубликат:
Codeigniter 2 формируется на одной странице, проблема validation_errors
У меня есть две формы на моей странице. Мне нужно проверить их 1 за раз, но я думаю, что есть конфликт. Вот посмотрите:
когда я отправляю любой из форм, оба они показывают одно и то же сообщение об ошибке
Я использую validation_errors()
для отображения сообщений. Как я могу проверить форму 1 за раз?
Вот код
public function update_user_info(){ $this->form_validation->set_rules("firstname","First Name","required"); $this->form_validation->set_rules("lastname","Last Name","required"); $this->form_validation->set_rules("middlename","Middle Name","required"); if($this->form_validation->run()===false){ //wrong } else { //correct } }
Я просто столкнулся с проблемой. Мое решение:
1. Сначала установите первое имя кнопки отправки = 'update_info'
2. Последовательно установите вторую кнопку кнопки отправки = 'change_password'
3.Найдите изменения в update_user_info ().
public function update_user_info(){ if (isset ($_POST['update_info'])) { $this->form_validation->set_rules("firstname","First Name","required"); $this->form_validation->set_rules("lastname","Last Name","required"); $this->form_validation->set_rules("middlename","Middle Name","required"); if($this->form_validation->run()===false){ //wrong } else { //correct } } else if (isset ($_POST['change_password'])){ form_validation of your change password }
Я думаю, что это самый простой способ исправить вашу проблему.
Удачи.
Вы можете сделать один скрытый ввод для каждой формы
First Form: <input type="hidden" name="form" value="form1" /> Second Form: <input type="hidden" name="form" value="form2" />
В вашем контроллере вы можете установить множество правил для каждой формы
$config['form1'] = array( array( 'field' => 'username', 'label' => 'Username', 'rules' => 'required' ), array( 'field' => 'password', 'label' => 'Password', 'rules' => 'required' ), ); $config['form2'] = array( array( 'field' => 'email', 'label' => 'Email', 'rules' => 'required' ), ); Now check which hidden field posted $form = $this->input->post('form') Now you can set rules as below $this->form_validation->set_rules($config[$form]); if ($this->form_validation->run()): // process form else: $data[$form.'_errors'] = validation_errors(); endif;
Теперь в вашем файле просмотра
if (isset($form1_errors)) echo $form1_errors; if (isset($form2_errors)) echo $form2_errors;
Если у вас есть разные ошибки проверки для каждой формы, вы можете проверить вывод из validation_errors
.
Насколько я вижу, validation_errors
позволяет вам изменять разделители ошибок и ничего больше. Тем не менее, вы можете попробовать показать отдельные ошибки формы следующим образом: <?php echo form_error('username'); ?>
<?php echo form_error('username'); ?>