2016-07-26 3 views
0

저는 PHP Phalcon을 사용합니다. 두 가지 다른 메뉴를 구현하고 싶습니다. 첫 번째는 일반 사용자 용이고 두 번째는 관리자 용입니다. 메뉴를 쉽게 확장 할 수있는 두 개의 메뉴 템플릿이 필요합니다.PHP - mvc 프레임 워크에서 두 종류의 메뉴

는 지금은 이런 식으로 뭔가를 :

//Main template: 

[...] 

if (session->role == 'admin') 
    include 'adminmenu.volt' 
elseif (session->role == 'user') 
    include 'usermenu.volt' 

{{ get_content() }} //from upper templates 

[...] 

(로깅되지 않은 사용자가 메뉴를 가지고 있지 않습니다.)

나는이 완전히 정확하지라고 생각합니다. 우선 나는 어떻게 적극적인 자세를 강조 해야할지 모르겠다. 둘째 컨트롤러에서 메뉴를 제어하고 싶습니다. 예를 들어 데이터베이스의 변경 사항으로 특별한 옵션을 추가 할 수 있습니다. 적절한 방법이 있습니까? 자바 스크립트, 모듈 또는 마이크로 서비스를 사용하지 않고 간단한 솔루션을 얻고 싶습니다.

+0

물론이 코드는 의사 코드입니다. – Robin71

+1

배열이나 XML 파일에서 메뉴를로드하고 사용자가 각 메뉴 항목을 볼 수있는 경우 ACL 규칙을 확인하십시오. – Timothy

+0

@Timothy에 동의합니다. 사용자가 생성 한 메뉴를 반복하는 하나의 템플릿 만 있습니다. 논리 구성 요소, 그것은 컨트롤러 또는 acl 또는 무엇이든 .. :) –

답변

0

아마 부분을 찾고있을 것입니다. 실행,

//This is a path relative to your views directory. 
//The following is accurate if your partials directory is a child of your views directory. 
$this->view->setPartialsDir('partials'); 

당신이 것을 수행하면 :

{% if this.session->get('role') == 'admin' %} 
    {{ partial('adminmenu') }} 
{% else %} 
    {{ partial('usermenu') }} 
{% endif %} 
당신이보기에 당신의 파셜 디렉토리까지를 설정해야합니다

: 당신의 기본 템플릿에서, 당신은 뭔가를하려는거야 {{partial ('name')}}은 partials 디렉토리의 name.volt 파일을 참조합니다.

위치를 강조 표시합니다. 귀하의 부분은 디스패처를 호출하고 컨트롤러와 액션이 무엇인지 요청할 수 있습니다 :

{{ this.dispatcher.getControllerName() }} and {{ this.dispatcher.getControllerName() }} 

당신은 당신의 href 속성에 대한 사람들의 가치를 확인하고 해당하면 활성 플래그를 설정할 수 있습니다.

관련 문제