метод перенаправления всегда выполняется в codeigniter - PullRequest
0 голосов
/ 12 августа 2011

У меня проблемы с функцией 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 НЕ ложна, метод "$ this-> util-> showErrorPage ();"продолжает выполнение и (сюрприз!) не перенаправляет страницу, но отображает страницу так, как если бы она перенаправляла на нее.Как мне узнать, что страница '/ index' отображается?... потому что у меня там есть методы ajax и, отслеживая страницу fotos_perfil с помощью firebug, я вижу вызовы ajax '/ index' после загрузки страницы fotos_perfil.

Не знаю, как лучшемогу я это объяснить.Он не должен входить в блок if, потому что $ cat НЕ ложно, но даже 'showErrorPage' выполняется.

И если функция $ cat ложна, 'showErrorPage' выполняется успешно и перенаправляет на'/ index', все в порядке

Если я изменю функцию 'showErrorPage' на это:

function showErrorPage() {
    echo "hello!!";
}

ничего не отображается.Итак, проблема в функции перенаправления.Он волшебным образом выполняется, избегая 'if'

Помогите пожалуйста, я не хочу, чтобы моя страница / index была «выполнена» в «фоне» моего «fotos_perfil»

решено : Моя ошибка.У меня был скрытый iframe в html, вызывающий 404 и перенаправляющий на страницу индекса.Этот метод showErrorpage используется во всех методах моего приложения.Спасибо всем.

1 Ответ

0 голосов
/ 12 августа 2011

Я думаю, что у вас двойное отрицание.

, если $this->catsdao->getById($id); возвращает false, когда для идентификатора ничего нет, тогда !$cat совпадает с !false, равным true.

РЕДАКТИРОВАТЬ: Извините, я думаю все назад, это, конечно, то, что вы хотите, чтобы ввести, если, когда у вас есть ложь, пожалуйста, игнорируйте это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...