2011-01-31 3 views
1

내 젠드 애플리케이션의 부트 스트랩 파일에서 현재 모듈 이름을 얻는 방법을 알아야합니다. 페이지의로드시 해시 된 쿠키와 토큰을 보내서 현재 사용자 정보를 얻으려는 웹 서비스 요청을하고 있습니다. 문제는 예를 들어 물어볼 수 있도록 3 개의 모듈 중 2 개에서만이 작업을 수행하면된다는 것입니다. 젠드 프레임 워크 : 부트 스트랩의 모듈 이름

($ MODULENAME! == "filteredmodule")는

감사합니다 { // 요청 을} 경우

.

답변

5

부트 스트랩은 응용 프로그램을 준비하기위한 것입니다. 컨트롤러 플러그인 (현재 호출 된 모듈을 얻는 데 사용할 수 있음) 또는 컨트롤러의 init() 함수에서이 종류의 호출을 수행하는 것이 좋습니다.

<?php 

final class YourApp_Controller_Plugin_YourPluginName extends Zend_Controller_Plugin_Abstract { 

    public function preDispatch(Zend_Controller_Request_Abstract $request) { 
     $module = $request->getModuleName(); //This is the module 

문서 :

이 컨트롤러 플러그인을 통해 현재 모듈을 얻는 방법이다 애슐리의 대답에 대한 http://framework.zend.com/manual/en/zend.controller.plugins.html

+0

덕분에 나는이 $보기 -> 탐색() 하고 있어요 있다는 것입니다)); bootrstrap 파일에 있는데, 거기에 역할을 설정하고 컨트롤러 플러그인이 부트 스트랩 리소스 후에 실행되기 때문에 다른 코드가 실행되기 전에이 코드를 실행해야합니다. 그래서 내가해야 할 일은 플러그인으로 내비게이션을 이동하는 것일까요 ?? – maxidela

+0

플러그인처럼 로직을 유지하면서 플러그인에서 탐색 ACL 역할을 재정의 할 수 있습니다. – Ashley

+0

Ashley가 맞습니다. 라우팅이 이루어지지 않았기 때문에 Bootstrap의 ACL 역할을 약간 조기에 설정할 수 있습니다. 그러나 어떤 자원이 요청되는지는 알지 못합니다 (ACL 논리를 수행하기가 어려울 수 있습니다). –

0

한 가지 : 당신이

$module = $request->getModuleName(); 
을 수행 할 경우

가능한 한 빨리 routeShutdown()에서 실행하십시오.

설명서에 따르면 "routeStartup()은 등록 된 라우트에 대한 요청을 평가하기 위해 Zend_Controller_Front가 라우터를 호출하기 전에 호출됩니다. 라우터가 요청 라우트를 마친 후에 routeShutdown()이 호출됩니다."

모듈, 컨트롤러, 동작 또는 경로에 지정된 다른 매개 변수와 같은 라우터 종속 요청 매개 변수는 routeShutdown() 이상 기능에서 액세스 할 수 있습니다. > SETACL ($이 - -> _ ACL) -> setRole (Zend_Registry : ('역할'을 얻을 난이 내 문제에 대해 알고