2011-04-25 2 views
1

나는 "사용자"와 "관리자"와 같은 두 개의 서로 다른 사용자 역할이 응용 프로그램을 만드는거야 다음Zend Framework의 다른 모듈에서 하나의 모듈에 어떻게 액세스 할 수 있습니까?

application 
    - configs 
    - controllers 
    - models 
    - modules 
    - admin 
     - controllers 
     - models 
     - views 
     ... 
    - user 
     - controllers 
     - models 
     - views 
     ... 
    - account 
     - controllers 
     - models 
     - views 
     ... 
    - profile 
     - controllers 
     - models 
     - views 
     ... 
    - views 
..... 

같은 젠드 프레임 워크 구조를 만들었습니다. 사용자와 관리자 모두 모듈 프로필에 액세스해야하며 관리자 만 계정 모듈에 액세스 할 수 있습니다. 현재 다음과 같은 문제가 있습니다.

관리자로 로그인하면 주소 표시 줄에 다음 URL이 표시되고 관리자 메뉴와 디자인 (레이아웃)이 완벽하게 나타납니다. localhost/public/관리자/인덱스

하지만 페이지에서 프로필 수정 링크를 클릭하면, 내가 관리자 레이아웃과 로컬 호스트/공공/프로필/편집 URL로 리디렉션 브라우저를 잃었다. 사용자 모듈에서도 동일한 문제가 발생합니다.

난 정확히 내가 편집 프로필 링크를 클릭하면, 내가 http://localhost/public/admin/profile/edit

그것을처럼해야 동일한 레이아웃 (관리자에 대한 관리자 레이아웃)와 URL 뭔가를 페이지에 액세스 할 수 있어야한다 필요한 것은 내가 위에 주어진대로 모듈을 가지고 젠드 프레임 워크와 함께 할 수 있습니까? 왜냐하면 나는 모듈을 기반으로 시스템을 유지할 필요가 있기 때문에 동일한 코드를 반복해서 다시하고 싶지 않기 때문이다. 나는 젠드 포럼을 확인했고 내가 묻는 것에 대한 정확한 대답을 찾을 수 없었다.

누구든지이 문제를 해결할 수 있도록 친절하게 도와 드릴 수 있습니다. 미리 감사드립니다. 친절한 답변,

답변

0

모듈은 별도로 액세스 할 수 있지만 레이아웃에서는 user/admin에 따라 메뉴를 설정할 수 있습니다. 로그인 사용자에게 세션 변수 a/c를 사용해야하고 프로파일 페이지를 렌더링하는 파일에 해당 변수를 전달해야합니다. 예 :

세션 변수를 색인 메뉴 파일에 전달하고 그에 따라 메뉴를 표시하십시오. 그러면 레이아웃 문제가 해결 될 것입니다.

1

예, 시스템에 plugin_architechture를 만들 수는 있지만 내 생각에 구조가 아직 적절하지 않습니다.

application 
    - configs 
    - controllers 
    - models 
    - modules 
    - admin (Backend Modules) 
     - user 
      - controllers 
      - models 
      - views 
      ... 
     - account 
      - controllers 
      - models 
      - views 
      ... 
     - profile 
      - controllers 
      - models 
      - views 
      ... 
    - front (Frontend Modules) 
     - user 
       - controllers 
       - models 
       - views 
       ... 
      - account 
       - controllers 
       - models 
       - views 
       ... 
      - profile 
       - controllers 
       - models 
       - views 

백엔드 2) 프런트 엔드 (기본값) 모듈을 두 개 만들어야합니다.

또한 코딩을 해킹해야하거나 새 URL 유형을 이해하는 자체로드 라이브러리를 만들어야합니다. 예를 들어 내가, 다음 URL이 될 것이다 관리 영역의 프로파일 편집 시스템에 가고 싶은 경우

그래서이 경우
http://www.server.com/admin/profile_edit/edit/id=99 

,

1) admin = module 
2) profile = inner module of ADMIN 
3) edit = controller file inside profile module 
4) edit = action function name in controller file (editAction()) 
5) id = parameter to pass 

당신이해야 할 일이 구조를 달성하기 위해,

url에서 모듈/컨트롤러/동작을 디코딩 할 책임이있는 Zend 라이브러리 파일 및 클래스를 확장하는 자체로드 라이브러리를 만듭니다.

저는 개인적으로이 구조와 구조를 만들었습니다.해당 폴더 파일에서 검색해야합니다.

/library/zend/Controller/Action 
/library/zend/Controller/Dispatcher 

혼동이 있으면 알려주십시오.

0

먼저 문제를 식별하기가 어렵습니다. 누군가가 당신을 도울 수 있도록 명확하게 지정하십시오. 내가 이해 한 것은 "관리자 레이아웃을 잃어 버렸고 브라우저가 localhost/public/profile/edit URL로 리디렉션되었습니다."

  1. 현재 컨트롤러에서 변경했거나 사용하지 않도록 설정했기 때문에 레이아웃이 손실되었을 수 있습니다. 여러 모듈에서 단일 레이아웃을 사용할 수없는 이유는 무엇입니까?
  2. 브라우저가 리디렉션되었으므로 리디렉션됩니다.

미안하지만 제가 말씀 드리지 않았지만 귀하의 질문을 이해할 때 최선을 다했습니다.

관련 문제