重定向方法始终在codeigniter中执行

重定向方法始终在codeigniter中执行,codeigniter,Codeigniter,我在codeigniter中的一个函数和url帮助器的重定向函数中遇到了问题。我要做的是验证变量$cat是否为false,如果是,则使用util库重定向到另一个页面,如果$cat不是false,则继续执行该方法: function fotos_perfil($id) { $this->data["s_menu"] = Util::MENU_CAT_ALBUMS; $cat = $this->catsdao->getById($id); if (!$c

我在codeigniter中的一个函数和url帮助器的重定向函数中遇到了问题。我要做的是验证变量$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->page;不断执行和惊喜!它不会重定向页面,但会呈现页面,就像重定向到页面一样。我如何知道页面“/索引”已呈现。。。因为我在那里有ajax方法,并且使用firebug跟踪“fotos_perfil”页面,所以在加载页面“fotos_perfil”之后,我看到了对“/index”的ajax调用

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

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

如果我将函数“淋浴RorPage”更改为:

function showErrorPage() {
    echo "hello!!";
}
没有回声。因此,问题在于重定向函数。它被神奇地执行,避免了“如果”

请帮忙,我不想让我的'/index'页面在我的'fotos_perfil'的'background'中执行


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

我想你们有双重否定

如果$this->catsdao->getById$id;如果没有ID,则返回false$猫是一样的!假即真


编辑:对不起,我想这当然是你想要的,如果你有false输入if,请忽略此项。

如果你删除if会发生什么$猫挡?我们需要检查如果没有这一行$this->util->page;,它工作正常。我对这一部分感到困惑,页面被执行,即使$cat为false,因为其他东西可能正在调用该页面。不为false的返回值是什么?你试过if$cat===false吗?@ace:如果我删除if$cat,请点击$this->util->batherror页面;被执行,用户被重定向到“索引”。也就是说,没关系。@danneth:已经试过了。同样的问题。我会更新帖子,提供更多信息更好地解释这一点