重定向方法总是在codeigniter中执行

时间:2011-08-12 04:58:57

标签: codeigniter

我遇到了codeigniter中的函数和url helper的重定向功能的问题。我要做的是验证变量$ cat是否为false,如果是,使用util库重定向到另一个页面,如果$ cat不为false,则继续执行该方法:

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');
}

问题是,当变量$ cat不为false时,方法“$ this-> util-> showErrorPage();”继续执行和(鄙视!)它没有重定向页面,但它确实呈现页面,就像它重定向到它一样。我如何知道页面'/ index'已呈现? ...因为我有ajax方法,并用firebug跟踪'fotos_perfil'页面,我在页面'fotos_perfil'加载后看到'/ index'的ajax调用。

我不知道如何才能更好地解释这一点。它不应该输入if块,因为$ cat不是false,但是'showErrorPage'甚至被执行。

如果$ cat函数为false,则'showErrorPage'成功执行并重定向到'/ index',这没关系

如果我将函数'showErrorPage'更改为:

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

没有回应。所以,问题在于重定向功能。这是神奇地执行,避免'if'

请帮助,我不想让我的'/ index'页面“执行”在'fotos_perfil'的'背景'中

已解决:我的错误。我在html中有一个隐藏的iframe,导致404并重定向到索引页面。 showErrorpage方法用于我的应用程序的所有方法。谢谢大家。

1 个答案:

答案 0 :(得分:0)

我认为你有双重否定。

如果$this->catsdao->getById($id);在ID没有任何内容时返回false,则!$cat!false相同,即true

编辑:对不起,我在想所有的倒退,这当然是你想要的,输入if如果你有假,请忽略这一点。