2013-05-30 1 views
1

Я создаю простой сайт, на котором пользователи могут зарегистрироваться, а затем войти в систему и добавить текстовые статьи. Без входа пользователь будет иметь роль гостя и сможет просматривать только статьи. Я делаю это как упражнение в рамках Zend 1, поскольку я только начал изучать Zend. Я сделаю контроллер AuthController для входа в систему, но я хочу знать, как перенаправить действие входа в этот контроллер из моего indexAction в IndexController. Кроме того, как я могу использовать настраиваемый плагин для реализации такого контроля доступа? Как его вызвать?Как перенаправить на другое действие контроллера в Zend

ответ

10

Вы можете перенаправить внутри метода действия с использованием:

$this->redirect('/module/controller/action/'); 
+1

Я предполагаю, что это было переименовано в $ this-> redirect() в последних версиях ZF. – wmac

0

Я думаю, что это воля помогает вам

$this->_helper->redirector('controller','action'); 

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

14

jalpesh и Hasina оба правильны своими короткими ответами.

Пример Jalpesh был бы сокращенным вызовом помощника действий redirector(), который по умолчанию используется для перенаправления gotoSimple(), за исключением того, что он, кажется, имеет параметры назад.

//corrected 
$this->_helper->redirector($action, $controller); 

будет более пространно называются:

$this->getHelper('Redirector')->gotoSimple($action, $controller = null, $module = null, array $params = array()); 

Есть несколько способов использования Redirector action helper, это просто очень распространенный пример.

Пример, представленный Хасиной, - это вызов контроллера utility method _redirect() гораздо более ограниченного кода, а вспомогательный помощник Redirector, но все же очень полезен.

//only accepts a url string as the first arg 
//deprecated as of ZF 1.7 still in documentation 
$this->_redirect($url, array $options = array()); 

по-видимому, от ZF 1.7 есть новый метод не в документации (нашел этот бит в DocBlock), который является предпочтительным:

//valid as of ZF 1.7, not in documentation 
$this->redirect($url, array $options = array()); 

Оба этих метода коммунальных услуг прокси для :

Zend_Controller_Action_Helper_Redirector::gotoUrl() 

Надеется, что это помогает

+0

Спасибо RockyFord! используя $ this -> _ redirect ('/ auth/login') Я получаю эту ошибку: запрошенный URL/demo/auth/login не найден на этом сервере. Моя папка проекта - демонстрационная версия, внутри которой у меня есть приложение папок, библиотека и публикация. Index.php находится внутри public, и я указываю свой браузер на localhost/demo/public /. –

2

Если вы используете маршруты, вы можете использовать $this->getHelper('Redirector')->setGotoRoute(array(), 'routeName');