Обновление CakePHP с 1.2 до 1.3 теперь дает петли перенаправления - PullRequest
0 голосов
/ 01 декабря 2011

Я недавно обновил CakePHP 1.2 до CakePHP 1.3, и теперь у меня есть некоторый код, который удерживает пользователя в цикле перенаправления. Это происходит после того, как пользователь успешно вошел в систему и решил щелкнуть ссылку для управления электронной почтой.

У меня есть некоторый код в контроллере, где метод index () проверит, является ли текущий пользователь администратором или нет. Если пользователь не является администратором, он сделает следующее:

function index()
{
    if ($this->Session->read('is_admin') < 1) {
        $this->redirect(array('controller' => 'emails', 'action' => 'view', 'id' => $this->Session->read('username')));
    }

    //...more code...
}

Это предназначено для перенаправления пользователя в метод view () и отображения только его электронной почты, а не электронной почты всех пользователей. Что происходит, когда я отлаживаю, это редирект продолжает заканчиваться в методе index ().

Есть ли что-то новое в CakePHP, которое мне не хватает? Нет ли нет необходимости использовать имя «представление» в качестве действия в контроллере?

* РЕДАКТИРОВАТЬ *

Хорошо, я был немного преждевременен с этим постом. Достигнут код в методе представления ($ username). Но дело в том, что $ username не определено, и у меня есть некоторый клиентский код, который затем перенаправляет обратно на действие index (), если оно не определено.

Я проверил исходное перенаправление, и $ this-> Session-> read ('username') заполняется именем пользователя, но оно просто не передается в аргументе $ username вида ().

Спасибо!

1 Ответ

0 голосов
/ 03 декабря 2011

Оказывается, подпись перенаправления изменена с 1.2 на 1.3:

http://book.cakephp.org/view/1561/Migrating-from-CakePHP-1-2-to-1-3 Классы библиотеки> Маршрутизатор

// CakePHP 1.2 way
$this->redirect(array('controller' => 'emails', 'action' => 'view', 'id' => $this->Session->read('username')));

// CakePHP 1.3 way
$this->redirect(array('controller' => 'emails', 'action' => 'view', $this->Session->read('username')));
...