2016-10-14 5 views
0

Я выполняю проект Я использую проверку формы codeigniter, но возникла проблема, я поставил проверки проверки с помощью if, но мои сообщения об ошибках не отображаются в представлении как это должно.Форма Validation codeigniter не показывает сообщение об ошибке

код ниже:

Ci контроллер

public function envia(){ 
     $this->form_validation->set_rules('nome', 'nome', 'required'); 
     $this->form_validation->set_rules('descricao', 'descricao', 'required'); 
     $this->form_validation->set_rules('preco', 'preco', 'required'); 
     if ($this->form_validation->run() == TRUE){ 
      $produtos = array(
      "nome" => $this->input->post("nome"), 
      "descricao" => $this->input->post("descricao"), 
      "preco" => $this->input->post("preco"), 
      ); 
      $this->load->model("produtos_model"); 
      $this->produtos_model->salva($produtos); 
      redirect('/produtos/'); 
     }else{ 
      redirect('/produtos/novo'); 
     } 

    } 

Посмотреть

<div class="container"> 
     <div class="row"> 
      <?php echo validation_errors(); ?> 
      <h2>Cadastro</h2> 
      <?php echo form_open('produtos/envia');?> 
      <div class="form-group"> 
      <?php 
      echo form_label("Nome:", "nome"); 
      echo form_input(array(
       "name" => "nome", 
       "id" => "nome", 
       "class" => "form-control" 
      )); 
      ?> 
      </div> 
      <div class="form-group"> 
      <?php 
      echo form_label("Descricao:", "descricao"); 
      echo form_input(array(
       "name" => "descricao", 
       "id" => "descricao", 
       "class" => "form-control" 
      )); 
      ?> 
      </div> 
      <div class="form-group"> 
      <?php 
      echo form_label("Preço:", "preco"); 
      echo form_input(array(
       "name" => "preco", 
       "id" => "preco", 
       "class" => "form-control" 
      )); 
      ?> 
      </div>   
      <div class="form-group"> 
      <?php 
      echo form_submit(array(
       "class" => "btn btn-primary", 
       "value" => "Cadastrar" 
      )); 
      ?> 
      </div> 
      <?php echo form_close();?> 

Я ценю внимание.

+0

Вы должны перенаправить пользователя на страницу «produtos/novo», если их представление не подтверждается? – Terminus

+0

Это похоже на полезный [бит документации] (https://www.codeigniter.com/userguide3/libraries/form_validation.html#the-controller) – Terminus

+0

вам следует загрузить представление вместо перенаправления, чтобы отобразить сообщение об ошибке –

ответ

0

Ваш код должен быть таким:

public function produtos() 
{ 
    $status = $this->uri->segment(2); // Sample url: http://localhost/productos/success 

    if(!empty($status) && $status = 'success') 
    { 
     $this->load->view('view_success'); 
    }else 
    { 
     $this->form_validation->set_rules('nome', 'nome', 'required'); 
     $this->form_validation->set_rules('descricao', 'descricao', 'required'); 
     $this->form_validation->set_rules('preco', 'preco', 'required'); 
     if ($this->form_validation->run() == TRUE){ 
      $produtos = array(
      "nome" => $this->input->post("nome"), 
      "descricao" => $this->input->post("descricao"), 
      "preco" => $this->input->post("preco"), 
     ); 

     $this->load->model("produtos_model"); 
     $this->produtos_model->salva($produtos); 
     redirect('/produtos/success'); //Success 
     }else{ 
      $this->load->view('view_form_input') // Your form was here 
     } 

    } 


} 

** Помните, чтобы получить проверка ошибок никогда не используйте redirect функцию. Используйте функцию redirect только тогда, когда проверка прошла успешно.

+0

спасибо за помощь, с которой она сработала –

+0

Вы можете отметить как принято @ViniciusdeGouvea – Nere

2

В разделе else не используйте перенаправление, потому что перенаправление перезагружает страницу, поэтому вы не можете получить сообщение проверки. использовать там $this->load->view('your_view')

public function envia(){ 
      $this->form_validation->set_rules('nome', 'nome', 'required'); 
      $this->form_validation->set_rules('descricao', 'descricao', 'required'); 
      $this->form_validation->set_rules('preco', 'preco', 'required'); 
      if ($this->form_validation->run() == TRUE){ 
       $produtos = array(
       "nome" => $this->input->post("nome"), 
       "descricao" => $this->input->post("descricao"), 
       "preco" => $this->input->post("preco"), 
       ); 
       $this->load->model("produtos_model"); 
       $this->produtos_model->salva($produtos); 
       redirect('/produtos/'); 
      }else{ 
       $this->load->view('your_view_where_is_your_form'); 
      } 

     } 
+0

спасибо за помощь он работал –

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