2011-01-31 5 views
0

この場合、フォームエラーを自分のフォームに送り返すために、フォーム検証ライブラリを取得できません。エラーを送信するフォームに戻る:コードイグナイター

私はaddImage.phpというイメージをアップロードするコントローラを持っています。このコントローラーは、do_upload処理のみを処理します。アップロードフォームを含むuploadimage.phpと呼ばれるビューがあり、/ addImage/do_uploadに送信します。

アップロードフォームが検証に失敗した後にフロントページコントローラが今home.php

に含まれている

<?php $this->load->view('uploadimage'); ?> 

を使用してコードイグナイタでテンプレートを使用して私のウェブサイトのフロントページにロードされ、私はちょうど私が私のtemplate_frにリダイレクトするにはどうすればよい

if($this->_submit_validate() == FALSE) 
     { 
       redirect('/', 'location'); 
       return;   
     } 

明確に(addImage.phpに)戻ってエラーをロードしないホームページにリダイレクトしていますont.phpこれらのエラーを維持しながら。私は何とかhome.phpコントローラをuploadimage.phpコントローラから呼び出すことができますか?私はそれを説明しようと自分自身を混乱させた!これが完全に不明な場合は、私に知らせてください、私は明確にしようとします。

答えて

2

the Documentationには、失敗した場合にビューファイルを再ロードするだけです。

if ($this->form_validation->run() == FALSE) 
    { 
    $this->load->view('myform'); 
    } 
    else 
    { 
    $this->load->view('formsuccess'); 
    } 

リダイレクトは、検証エラー情報をフラッシュする新しいサーバー要求を生成します。

+0

私がいる問題は、私の見解では、完全なWebページではないということです - 私のフォームは事のちょうど

一種であるので、私は完全なWebページをコンパイルヘッダビューとフッタービューとテンプレートビューを持っていますので、私はそのビューを読み込む場合は、ページの残りの部分を殺す。 – Rapture

+0

その後、最初にフォームを読み込んだときと同じように、すべてのビューをリロードしてください。 – jondavidjohn

+0

私はちょうどコントローラhome.phpのインデックスメソッドを呼び出す方法を学ぶ必要があると思うし、それは動作します - コードをコピーして貼り付けることなくこれを行う簡単な方法はありますか? – Rapture

0

検証に失敗した場合は、フォームを再読み込みする必要があります。 concelのアップロードにボタンを追加したいかもしれません。ビューで 、あなたが同様のエラー(検証helparesについての情報がたくさんある)を示すために、いくつかのタグを追加する必要があります。if(ISSET($のerror_image))のための

<?=form_open_multipart("/personas/savefoto", array('class' => "form3"))?> 
      <h3><?=$heading?></h3> 

      <div class="center"> 
       <?php echo '<strong>'.mb_convert_case($record['nombre'].' '.$record['apellido1'].' '.$record['apellido2'], MB_CASE_TITLE).'</strong><br/>'; 
       if(file_exists("fotos/e".MATRIZ."/b".$record['id'].".jpg")){ 
        ?> 
        <img class="foto" src="<?php echo base_url()."fotos/e".MATRIZ."/b".$record['id']?>.jpg"/> 
        <br/><br/> 
        <?php 
       } ?> 
      </div> 

      <div class="form-row"> 
       <label for="imagen">Nueva imagen <br/>(jpg, gif o png)</label> 
       <input type="file" name="userfile" size="20" /> 
       <br/> 

        <?php if(isset($error_image)) echo '<p class="error">'.$error_image.'</p>'; ?> 
      </div> 
      <div class="form-row center"> 
       <input type="submit" value="Aceptar" /> 
       <input type="button" value="Cancelar" onclick="location.href='/system.php/personas/admin';"> 
      </div> 
      <?=form_close();?> 

表情を

0

あなたは可能性がありvalidation_errors()関数を使用してセッション変数に設定する

$this->session->set_userdata(array('form_errors', validation_errors())); 

次に、リダイレクトページにアクセスしてください。

echo $this->session->userdata('form_errors'); 
$this->session->unset_userdata('form_errors'); // prevent them from being stored past use