2016-10-14 15 views
0

私はcodeigniterフォームの検証を使用していますが、問題がありました。チェックの検証をifに入れましたが、エラーメッセージが表示されませんそれはすべきだ。フォーム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

他のセクションでは、リダイレクトはページをリロードするためにリダイレクトを使用しないでください。理由はなぜ検証メッセージを受け取れないのかです。このようにする必要がありますが$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

を表示するために代わりにリダイレクトを表示する必要がありますそれは働いた –

関連する問題