Som "čelia problémom s funkcioukódovanie a presmerovanie pomocníka url. Čo sa snažím urobiť, je overiť, či je premenná $ cat nepravdivá, ak áno, presmerovať na inú stránku pomocou knižnice util, a ak $ cat nie je falošná, pokračovať v realizácii metódy:
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);
}
Toto je metóda vnútri:
function showErrorPage() {
$this->CI->load->helper("url");
redirect("/index", "refresh");
}
Problém je, že keď premenná $ cat nie je NIEfalse, metóda "$ this-> util-> showErrorPage ();" sa stále vykonáva a (surpise!) nie je presmerovanie stránky, ale to robí stránku, ako by to "d presmerovanie na to. Ako zistím, že stránka" / index "je vykreslený? ... pretože som ajax metódy tam a sledovanie stránky "fotos_perfil" s firebugom vidím ajax volania "/ index" po načítaní stránky "fotos_perfil".
Neviem, ako lepšie to môžem vysvetliť. Nemalo by sa zadávať do bloku if, pretože $ cat nie je false, ale "showErrorPage" sa dokonca vykoná.
A ak je funkcia $ cat nepravdivá, "showErrorPage" sa vykoná úspešne a presmeruje na "/ index", to "s ok
Ak zmením funkciu "showErrorPage" na túto:
function showErrorPage() {
echo "hello!!";
}
nič nie je ozveny. Problém je teda s funkciou presmerovania. Je magicky vykonaná, vyhýbajúc sa "ak"
Pomôžte mi, nechcem mať "/ index" stránku "popravený" v "pozadí" môjho "fotos_perfil"
vyriešené: Moja chyba. Mal som skrytý iframe v html, čo spôsobilo 404 a presmerovanie na stránku indexu. Metóda showErrorpage sa používa vo všetkých metódach pozdĺž mojej aplikácie. Ďakujem vám všetkým.
odpovede:
0 pre odpoveď č. 1Myslím, že máte dvojitú negáciu.
ak $this->catsdao->getById($id);
výnos false
keď tam nie je nič pre ID, potom !$cat
je rovnaká ako !false
ktorý je true
.
EDIT: Ospravedlňujeme sa, "ja som myslel, že všetky späť to je samozrejme to, čo chcete, zadať, ak máte falošné, prosím, ignorovať.