로/숨기기 메뉴 항목을 표시 할 수 있습니다 내가 젠드 탐색에 어려움이있다. 여기에 내 첫 번째 질문입니다. 그래서 뭔가 잘못 되었다면 말해주세요. 나는 그것을 바로 잡을 것입니다.어떻게 내가 PHP에서, 젠드 프레임 워크와 함께 일하고 있어요</p> <p>[마지막에 갱신보기] 젠드 프레임 워크
나는 메뉴가 내 메뉴를 포함하는 탐색 XML 파일이 내 응용 프로그램
Home
Login
Logout
Member's Page
에서 다음과 같이 찾고 있습니다. 또한
<nav>
<home>
<label>Home</label>
<uri>/</uri>
</home>
<login>
<label>Login</label>
<uri>/index/login</uri>
</login>
<logout>
<label>Logout</label>
<uri>/index/logout</uri>
</logout>
<member>
<label>Member's Page</label>
<uri>/index/member</uri>
</member>
</nav>
이
<div class="top-level">
<?php
foreach ($this->container as $page) {
if ($page->isVisible()) {
if ($page->isActive(true)) {
if ($page->isActive(false)
)$page->setClass("active");
else
$page->setClass("open");
echo $this->navigation()->menu()->htmlify($page);
//... the same continue for the 3 menu level
마지막으로, 내 layout.phtml, 나는 메뉴에게 지금은
<?php
$partial = array('menu.phtml', 'default');
$this->navigation()->menu()->setPartial($partial);
echo $this->navigation()->menu()->render();
?>
렌더링이이 포함 된 menu.phtml, 내 메뉴는 잘 작동합니다 하지만 내 메뉴에는 로그인 및 로그 아웃이 항상 표시되지 않습니다. 그래서, 내가해야 할 일은 로그인 할 때 로그인을 숨기고 로그 아웃 할 때 로그 아웃을 숨기는 것입니다. 시작했을 때 매우 간단 해 보였지만 여전히 작동하지만 작동하게 만들 수는 없습니다. 로그인 한 사용자에 따라 항목을 숨기거나 표시 할 수있는 방법과 방법을 모르겠습니다. 앞으로 다른 항목을 숨기거나 표시해야하기 때문에 실제로 작동시켜야합니다.
이렇게하는 방법이 있습니까?
감사합니다.
편집 :
나는 현재의 역할과 권한 부여를 위해 젠드 :: 인증 또는 Zend_ACL을 사용하지 않는. 사용자가 로그인했는지 여부를 알고 싶다면 사용자가 로그인 한 경우에만 세션에 토큰이 있습니다. 가능하다면 내 메뉴를 변경하지 않고 작동시키고 싶습니다.
업데이트 :
나는 제안 된 것보다 다른 방식으로 작업하고있었습니다. 정말 깨끗한 방법인지는 모르지만 지금은 그 일을하고 있습니다. 자, 이제 내 XML 탐색 파일은 다음과 같습니다.
<menuAnonymous>
<home>
<label>Login</label>
<uri>/login</uri>
</home>
</menuAnonymous>
<menuLogged>
<home>
<label>Logout</label>
<uri>/Logout</uri>
</home>
</menuLogged>
이 두 가지를 내 부트 스트랩에서 이와 같이 초기화합니다.
$config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml', 'menuNotLogged');
$container = new Zend_Navigation($config);
Zend_Registry::set('main',$container);
그리고 내 레이아웃에서 내 토큰을보고 그것에 따라 메뉴를 표시합니다. 내가 지금 원하는처럼
if ($tokenValid) {
echo $this->navigation()->menu()->render(Zend_Registry::get('main'));
} else {
echo $this->navigation()->menu()->render(Zend_Registry::get('logged'));
}
는 그래서 일하고,하지만, 난 여전히 청소기를하고 싶은, 그래서 당신이 날 도와 어떤 제안이 있다면 ... 감사합니다!
하지만 ACL을 사용하지 않고 있습니다. 이러한 세부 정보로 내 질문을 수정합니다. 감사합니다. – Fanny
웹 세미나를 살펴보십시오. XML에 몇 가지 추가 정보를 저장하고 네비게이션에 정보를 전달하여 관련 항목 세트를 가져옵니다. 따라서 가짜 역할을 2 개 (익명 사용자 1 명, "로그인 사용자 1 명") 만 만들 수 있으며이를 사용하여 사용 사례에 맞는 메뉴 항목을 표시 할 수 있습니다. – wimvds
늦게 답변 해 죄송합니다. 알림을받지 못했고 다른 작업을하고있었습니다. 나는 그것을 살펴보고, 무엇이 효과가 있는지에 따라 대답을 받아 들일 것이다. 고맙습니다 – Fanny