2009-05-29 4 views

답변

3

나중에 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); 
     } 
    } 
} 

}

0

가장 좋은 방법은 아마도 당신을 수 Controller Plugin

입니다 :
(나는 단순히 헤더 ('위치를 사용할 수 있습니다 알고 있습니다. 라우팅이 발생한 후에 호출되는 routeShutdown() 훅을 추가하십시오.이 플러그인에서는 요청 데이터를 확인하거나 ACL에서 권한을 찾거나 무작위로 리디렉션 할 수 있습니다. 원하는 무엇을!

선택할 수 있습니다!

편집 : 질문을 다시 읽으면 루트에 관심이없는 것처럼 보입니다. 코드를 삽입하기 위해 부트 스트랩 후 가장 빠른 지점으로 routeStartup()을 사용하십시오.

0

나는 전면 컨트롤러에서 라우터를 잡고 그 assemble() 메소드를 호출하고 header() :

감사합니다, 당신은 routeShutdown "의 상태를 확인할 수 있습니다

+0

게시하기 전에 실제로 시도했습니다. 어떤 이유로 든 작동하지 않았습니다 (값이없는 곳). 어셈블 방법을 사용하기 전에 라우터에서 뭔가를 초기화해야합니까? (thanks) –

+0

간단한 코드 샘플이 있습니까? –

0

롭 ... 사용합니다 "메소드를 플러그인에 넣은 다음 $ this-> actionController -> _helper-> redirector()를 사용하여 리다이렉트합니다.)

2

는 ... 그게 당신의 코드가 붙어를 끝 코더에 대한 디버깅 중 하나 끔찍한 밤이 될 것입니다 수년 이내로.

Front Controller Plugin이나 Action Controller Plugin을 사용하거나 Action Controller에서 사용하십시오. 궁극적으로 이러한 리디렉션은 모두 피해야합니다 ...

+2

왜 투표가 늦습니까? – balupton

+0

왜 부트 스트랩 파일에 있어야하지 않습니까? 제발 좀 더 자세히 설명해주세요. –