Estoy enfrentando problemas con una función enCodeigniter y función de redireccionamiento del ayudante de url. Lo que estoy tratando de hacer es verificar si la variable $ cat es falsa, si es así, redirigir a otra página usando la biblioteca util, y si $ cat no es falsa, continúe ejecutando el método:
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);
}
Este es el método dentro de util:
function showErrorPage() {
$this->CI->load->helper("url");
redirect("/index", "refresh");
}
El problema es que cuando la variable $ cat NO esfalso, el método "$ this-> util-> showErrorPage ();" sigue ejecutando y (¡sorprende!) no redirige la página, pero sí la renderiza como si "redirigiera a ella. ¿Cómo sé que la página" / index "está representada? ... porque tengo ajax Métodos allí y seguimiento de la página "fotos_perfil" con firebug Veo las llamadas ajax de "/ index" después de cargar la página "fotos_perfil".
No sé cómo mejor puedo explicar esto. No debe ingresar en el bloque if, porque $ cat NO es falso, pero incluso se ejecuta "showErrorPage".
Y si la función $ cat es falsa, el "showErrorPage" se ejecuta con éxito y redirige a "/ index", eso está bien
Si cambio la función "showErrorPage" a esto:
function showErrorPage() {
echo "hello!!";
}
nada se hace eco. Por lo tanto, el problema es con la función de redirección. Se ejecuta mágicamente, evitando el "si".
Ayuda, por favor, no quiero que mi página "/ index" se ejecute "en el" fondo "de mi" fotos_perfil "
SOLUCIONADO: Mi error. Tuve un iframe oculto en el html que causó un 404 y redirigió a la página de índice. Ese método showErrorpage se usa en todos los métodos a lo largo de mi aplicación. Gracias a todos.
Respuestas
0 para la respuesta № 1Creo que tienes una doble negación en marcha.
Si $this->catsdao->getById($id);
devoluciones false
cuando no hay nada para la identificación, entonces !$cat
es lo mismo que !false
cual es true
.
EDITAR: Lo siento, estoy pensando al revés, esto es, por supuesto, lo que quiere, para ingresar el if cuando tenga falso, por favor ignore esto.