Перенаправление на предыдущую страницу в Zend Framework - PullRequest
28 голосов
/ 08 августа 2009

Я хочу добавить URL-адрес перенаправления к своему действию форм входа в систему (в виде запроса) на странице входа в систему, поэтому после входа в систему можно перейти на предыдущую страницу, на которой он или она просматривал.

Сначала я подумал об использовании Zend Session и сохранил URL каждой страницы в переменной. но я прочитал в документации, что это накладные расходы. Так есть ли лучший способ сделать это? или есть другой способ использовать сессию Zend без накладных расходов?

Ответы [ 11 ]

0 голосов
/ 08 августа 2009

Я уверен, что есть какой-то встроенный метод для этого где-то в ZF, но я ленив, поэтому я сделал это так:

Создайте свой собственный App_Controller_Action класс (create /library/App/Controller/Action.php). Расширьте все ваши контроллеры этого класса

В каждом из моих контроллеров я вызываю $ this -> _ initAuth (), функция вставлена ​​ниже:

protected function _initAuth()
{
    $auth = Zend_Auth::getInstance();
    if (!$auth->hasIdentity() && strcmp($_SERVER['REQUEST_URI'], '/auth/login') <> 0)
        $this->_redirect('/auth/login' . $_SERVER['REQUEST_URI']);
    else
        $this->_identity = $auth->getIdentity();
}

В моем AuthController я делаю следующее, чтобы убедиться, что моя форма указывает на полный URL:

$uri = str_replace('/auth/login','',$_SERVER['REQUEST_URI']);
if (strlen($uri) > 0)
    $form->setAction($this->_helper->url('login') . $uri);
else
    $form->setAction($this->_helper->url('login'));

Если логин подтверждается, я делаю следующее:

if (strlen($uri) > 0)
    $this->_redirect($uri);
else
    $this->_redirect('/');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...