Я стикаюся з проблемами з функцією вcodeigniter і перенаправляти функцію помічника url. Що я намагаюся зробити, це перевірити, чи є змінна $ cat помилковою, якщо так, то перенаправляти на іншу сторінку за допомогою бібліотеки util, і якщо $ cat не є помилковим, продовжуйте виконувати метод:
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 ();" продовжує виконуватися і (surpise!) він не перенаправляє сторінку, але це робить сторінку, як якщо б "D перенаправлення на нього. Як я знаю, що сторінка" / індекс "візуалізується? методів немає, і простежуючи сторінку "fotos_perfil" з firebug я бачу виклики ajax "/ index" після завантаження сторінки "fotos_perfil".
Я не знаю, як краще пояснити це. Вона не повинна входити в блок if, оскільки $ cat НЕ є помилковим, але "showErrorPage" навіть виконується.
І якщо функція $ cat є помилковою, "showErrorPage" успішно виконується і перенаправляє на "/ index", що добре
Якщо змінити функцію "showErrorPage" на це:
function showErrorPage() {
echo "hello!!";
}
ніщо не повторюється. Отже, проблема полягає в функції перенаправлення. Він магічно виконаний, уникаючи "якщо"
Допоможіть, будь ласка, я не хочу, щоб моя "/ index" сторінка "виконувалася" на "тлі" мого "fotos_perfil"
Вирішено: Моя помилка. Я мав прихований iframe у html, викликаючи 404 та перенаправлення на сторінку індексу. Цей метод showErrorpage використовується у всіх методах, розташованих на моєму додатку. Дякую вам всім.
Відповіді:
0 для відповіді № 1Я думаю, у вас є подвійне заперечення.
якщо $this->catsdao->getById($id);
повертає false
тоді, коли немає нічого для ідентифікатора, то !$cat
такий же, як і !false
який true
.
EDIT: Вибачте, я думаю, що все назад, це, звичайно, те, що ви хочете, щоб увійти, якщо, коли у вас є помилкові, будь ласка, ігноруйте це.