부트 스트랩 파일의 일부 조건에 따라 리디렉션해야합니다.
프론트 컨트롤러 및 라우트가 정의 된 후에 수행됩니다.
어떻게하면됩니까? 요점은 내가 URL을 구축하기 위해 라우터를 사용할 필요가있다) ....Zend Framework의 부트 스트랩에서 브라우저를 리디렉션 할 수 있습니까?
답변
나중에 ZF에서 프로그래밍 중이며 문제에 대한 해결책을 얻었습니다. 다음은 사용자가 로그온 한 위치를 결정하는 부트 스트랩의 기능입니다. 리디렉션 정말 부트 스트랩 파일에 안
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected $_front;
(...)
protected function _initViewController()
{
(...)
$this->bootstrap('FrontController');
$this->_front = $this->getResource('FrontController');
(...)
}
protected function _initLogado()
{
$router = $this->_front->getRouter();
$req = new Zend_Controller_Request_Http();
$router->route($req);
$module = $req->getModuleName();
$auth = Zend_Auth::getInstance();
if ($auth->hasIdentity()) {
$this->_view->logado = (array) $auth->getIdentity();
} else {
$this->_view->logado = NULL;
if ($module == 'admin') {
$response = new Zend_Controller_Response_Http();
$response->setRedirect('/');
$this->_front->setResponse($response);
}
}
}
}
가장 좋은 방법은 아마도 당신을 수 Controller Plugin
입니다 :
(나는 단순히 헤더 ('위치를 사용할 수 있습니다 알고 있습니다. 라우팅이 발생한 후에 호출되는 routeShutdown() 훅을 추가하십시오.이 플러그인에서는 요청 데이터를 확인하거나 ACL에서 권한을 찾거나 무작위로 리디렉션 할 수 있습니다. 원하는 무엇을!
선택할 수 있습니다!
편집 : 질문을 다시 읽으면 루트에 관심이없는 것처럼 보입니다. 코드를 삽입하기 위해 부트 스트랩 후 가장 빠른 지점으로 routeStartup()을 사용하십시오.
나는 전면 컨트롤러에서 라우터를 잡고 그 assemble()
메소드를 호출하고 header()
:
감사합니다, 당신은 routeShutdown "의 상태를 확인할 수 있습니다
롭 ... 사용합니다 "메소드를 플러그인에 넣은 다음 $ this-> actionController -> _helper-> redirector()를 사용하여 리다이렉트합니다.)
는 ... 그게 당신의 코드가 붙어를 끝 코더에 대한 디버깅 중 하나 끔찍한 밤이 될 것입니다 수년 이내로.
Front Controller Plugin이나 Action Controller Plugin을 사용하거나 Action Controller에서 사용하십시오. 궁극적으로 이러한 리디렉션은 모두 피해야합니다 ...
왜 투표가 늦습니까? – balupton
왜 부트 스트랩 파일에 있어야하지 않습니까? 제발 좀 더 자세히 설명해주세요. –
게시하기 전에 실제로 시도했습니다. 어떤 이유로 든 작동하지 않았습니다 (값이없는 곳). 어셈블 방법을 사용하기 전에 라우터에서 뭔가를 초기화해야합니까? (thanks) –
간단한 코드 샘플이 있습니까? –