我遇到了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方法用于我的应用程序的所有方法。谢谢大家。
答案 0 :(得分:0)
我认为你有双重否定。
如果$this->catsdao->getById($id);
在ID没有任何内容时返回false
,则!$cat
与!false
相同,即true
。
编辑:对不起,我在想所有的倒退,这当然是你想要的,输入if如果你有假,请忽略这一点。