Zend Framework MVC перенаправляет на другой контроллер и действие - PullRequest
5 голосов
/ 26 октября 2010

Я пытаюсь выяснить, как остановить Zend или перенаправить Zend на другой контроллер Zend и выполнить действие, если проверка в загрузочном ремешке не удалась.

Например, переменная get не существуетили, более вероятно, сеанс не существует, то есть пользователь должен войти в систему.

, поэтому пользователь первоначально запросил индекс / someaction

, но я хочу, чтобы он зашел в login / index

в моем загрузочном ремне я бы поместил условие и затем изменил действие контроллера для просмотра.

Если я делаю это нестандартным способом, может ли кто-нибудь направить меня к документации по наилучшей практике?

Зенд новичок

Ответы [ 3 ]

4 голосов
/ 26 октября 2010

С Zend документация (Диспетчер)

// forward to an action in another controller:
// FooController::bazAction(),
// in the current module:
$this->_forward('baz', 'foo', null, array('baz' => 'bogus'));
4 голосов
/ 26 октября 2010

Я бы посоветовал вам сделать с плагинами для проверки доступа на каждой странице и для входа в систему создать контроллер аутентификации.

Здесь вы узнаете, как это сделать http://alex -tech-adventures.com/development/zend-framework/61-zendauth-and-zendform.html

Пример:

class Plugin_AccessCheck extends Zend_Controller_Plugin_Abstract 
{
    public function preDispatch(Zend_Controller_Request_Abstract $request)
    {
        // ...

        if(!$auth->hasIdentity())
        {
            $request->setControllerName('authentication')
                 ->setActionName('login');
        }
    }
}
2 голосов
/ 26 октября 2010

Обычно я не помещаю аутентификацию в загрузчик, у которого должен быть свой собственный контроллер.

Создайте AuthController (), чтобы настроить ваш адаптер аутентификации и настроить ваш экземпляр.

Затем в обычном представлении (для защищенных страниц) просто проверьте ваш экземпляр с помощью чего-то вроде:

$auth = Zend_Auth::getInstance();     
if(!$auth->hasIdentity())      
{
#re-direct to login page
}
...