2015-03-19 5 views
1

Похоже, что могут возникнуть вопросы о валидации формы и формы.Проверка формы Codeigniter не будет выполняться

У меня возникла проблема с получением моей проверки формы для работы. Я создал форму для регистрации, которая запрашивает у пользователя различную информацию. Затем я создал форму, которая позволит пользователю редактировать свою информацию. Валидация формы отлично работает в форме регистрации, но я не могу заставить ее запустить проверку на другой форме.

мой взгляд

<h1>Edit user</h1> 

<div id="body"> 
     <p>Edit user information.</p> 

    <?php 



    echo form_open('user_admin/user_update'); 

    echo validation_errors(); 

    echo form_hidden('id', $results->id); 

    echo "<p><lable>Email:</lable>"; 
    echo form_input('email', $results->email); 
    echo "</p>"; 


    echo "<p><lable>Name:</lable>"; 
    echo form_input('name', $results->name); 
    echo "</p>"; 

    echo "<p><lable>Last name:</lable>"; 
    echo form_input('lastname', $results->lastname); 
    echo "</p>"; 

    echo "<p><lable>Home address:</lable>"; 
    echo form_textarea('homeaddress', $results->homeaddress); 
    echo "</p>"; 

    echo "<p><lable>Postal address:</lable>"; 
    echo form_textarea('posteladdress', $results->posteladdress); 
    echo "</p>"; 

    echo "<p><lable>Mobile number:</lable>"; 
    echo form_input('mobile', $results->mobile); 
    echo "</p>"; 

    echo "<p><lable>Home telephone:</lable>"; 
    echo form_input('hometel', $results->hometel); 
    echo "</p>"; 

    echo "<p><lable>ID number:</lable>"; 
    echo form_input('idnum', $results->idnum); 
    echo "</p>"; 

    echo "<p>"; 
    echo form_submit('edit_submit', 'Update'); 
    echo "</p>"; 

    echo form_close(); 

    ?> 

Мой контроллер

public function user_update() 
{ 
    $this->load->library('form_validation'); 
    $this->load->model('model_users'); 

    $this->form_validation->set_rules('email', 'Email', 'required|trim|valid_email|is_unique[user.email]'); 
    $this->form_validation->set_rules('name', 'Name', 'required|trim'); 
    $this->form_validation->set_rules('lastname', 'Last name', 'required|trim'); 
    $this->form_validation->set_rules('homeaddress', 'Home address', 'required|trim'); 
    $this->form_validation->set_rules('posteladdress', 'Postel address', 'required|trim'); 
    $this->form_validation->set_rules('mobile', 'Mobile number', 'required|trim'); 
    $this->form_validation->set_rules('hometel', 'Home telphone', 'required|trim'); 
    $this->form_validation->set_rules('idnum', 'ID Number', 'required'); 


    $this->form_validation->set_message('is_unique', 'This email address has already been registered. Please try again.'); 

    if ($this->form_validation->run()==true) 
    { 

     $id = $this->input->post('id'); 
     $this->model_users->update_info(); 
     echo "The users details have been updated successfully"; 
     redirect ('user_admin/user_main'); 
    } 
    else 
    { 
     echo "The users details were not updated. Please contact the admistrator!"; 


    } 


} 

С помощью контроллера в его текущей конфигурации я могу получить базу данных для обновления путем изменения, если заявление FALSE. Поэтому я теперь, когда информация о сообщении передается в базу данных и обновляется.

Возможно, кто-нибудь посмотрит мой код и скажите мне, что я сделал неправильно.

Спасибо.

+0

Когда вы редактируете режим, он не работает? Почему вы не используете javascript для проверки на стороне клиента? – Karthikeyani

+0

вы можете перейти к другому нажатию кнопки обновления? –

+0

Да, он будет работать с инструкцией else и напечатать сообщение об ошибке –

ответ

0

Попробуйте извлечь эту строку из кода, а затем повторите попытку.

$this->form_validation->set_message('is_unique', 'This email address has already been registered. Please try again.'); 

Я думаю, что эта линия должна войти в вашу собственную функцию проверки. Если это сработает, то просто прочитайте функции пользовательской проверки формы на сайте codeigniter.

Если вы используете HMVC, то это может вызвать некоторые проблемы с настраиваемыми функциями в валидации, но там есть довольно простые способы, но вам нужен Google для получения точного ответа.

+0

Даже если я удалю set_message из кода, который он все еще не формирует, проверка еще не выполняется. –

+0

Вы пробовали поставить в свой оператор else, чтобы узнать, что именно вызывает ошибку? – PrestonDocks

+0

Я сделал то, что вы предложили, и поместил 'echo validation_errors();'. в оператор else и возвращает ошибку в форме. Однако мне бы хотелось, чтобы страница формы перезагрузилась, а затем представила ошибки выше формы, когда страница перезагружается. Я заставил его работать таким образом на моей странице регистрации. –

Смежные вопросы