2011-08-12 1 views
0

私はcodeigniterの関数とurlヘルパーのリダイレクト関数に問題があります。私は何をしようとしていると、メソッドの実行を継続変数$猫がfa​​lseの場合はそうならば、utilのライブラリを使用して別のページにリダイレクトを確認し、$猫が偽でない場合は次のとおりです。リダイレクトメソッドは常にコードシニターで実行されます

function fotos_perfil($id) { 

    $this->data["s_menu"] = Util::MENU_CAT_ALBUMS; 

    $cat = $this->catsdao->getById($id); 
    if (!$cat) { 

     //here is the problem!! 

     $this->util->showErrorPage(); 
     return false; 
    } 
    $this->data["cat"] = $cat; 

    $vuser = $this->usersdao->getById($cat->user); 
    $this->data["vuser"] = $vuser; 

    $this->load->view("front/cat/profile-photos", $this->data); 
} 

これは、 utilの内部方法:

function showErrorPage() { 
    $this->CI->load->helper('url'); 
    redirect('/index', 'refresh'); 
} 

問題は、変数$猫が偽されていない場合は、この方法 "の$ this - > util-> showErrorPage();"実行し続けると、ページをリダイレクトしませんが、ページをリダイレクトするかのようにレンダリングします。ページ '/ index'がレンダリングされていることをどのように知ることができますか? ...私はそこにajaxメソッドを持っているので、 'fotos_perfil'ページをたわごとでトレースすると、 'fotos_perfil'ページがロードされた後、 '/ index'のajax呼び出しが表示されます。

私はこれをいかに良く説明できますかわかりません。 $ catはfalseではありませんが、 'showErrorPage'も実行されるので、ifブロックに入力しないでください。

と$猫の機能がfalseの場合は、「showErrorPageは」が正常に実行され、「/インデックス」にリダイレクトし、私はこれに関数「showErrorPage」を変更した場合はそれが

大丈夫ですされています

function showErrorPage() { 
    echo "hello!!"; 
} 

何もエコーされません。したがって、問題はリダイレクト機能です。 :それは魔法のようにしてください

ヘルプ]場合は、 '、私は私の

を解決した「fotos_perfil」の「背景」に「実行」私の「/インデックス」のページを持っている必要はありません避けて、実行されます私の間違い。私はhtmlに隠されたiframeを持っていて、404を引き起こし、インデックスページにリダイレクトしました。そのshowErrorpageメソッドは、私のアプリケーションに沿ったすべてのメソッドで使用されます。皆さん、ありがとうございました。

+1

'if(!$ cat)'ブロックを削除するとどうなりますか?この行がなければ '$ this-> util-> showErrorPage();'をチェックする必要があります。これは正しく動作します。私はshowErrorPageを呼び出すかもしれないので、!$ catがfalseであっても、この部分の 'showErrorPageは実行されます。 – ace

+0

falseでない戻り値は何ですか? 'if($ cat === false)'を試したことがありますか? – danneth

+0

@ace: 'if($ cat)'を削除すると '$ this-> util-> showErrorPage();'が実行され、ユーザーは 'index'にリダイレクトされます。つまり、大丈夫です。 – jacruzca

答えて

0

あなたは二重否定があると思います。

false戻り$this->catsdao->getById($id);場合IDは何もありません場合は、その後、!$cattrueある!falseと同じです。

EDIT:申し訳ありませんが、私は後ろ向きに考えていますが、これはもちろんあなたが望むものです。もしあなたが偽をしている場合には、これを無視してください。