2010-04-02 1 views
1

처음으로 여기 나와 있기 때문에 맨발로 나와주세요. zend framework을 사용하여 문제를 해결해야합니다. 특히 zend_nav를 사용하여 layout/layout.phtml 페이지를 통해 재사용 가능한 메뉴를 생성해야합니다. 이들은 각각의 파일에있는 코드 조각입니다. 애플리케이션/CONFIGS/navigation.xml에서의 제젠드 프레임 워크의 Zend_Nav 문제가 나타나 메뉴를 가져 오는 중

,

<configdata> 
    <nav>  
     <label>Home</label> 
     <controller>index</controller> 
     <action>index</action> 
     <pages> 
      <add> 
       <label>Add</label> 
       <controller>post</controller> 
       <action>add</action> 
      </add> 
      <login> 
       <label>Admin</label> 
       <controller>login</controller> 
       <action>login</action> 
      </login> 
     </pages>  
    </nav> 
</configdata> 

후 (해당 특정 방법을 도시)를 Bootstrap.php 파일의 객체에 전달

protected function __initNavigation(){ 
    $this->bootstrap('layout'); 
    $layout = $this->getResource('layout'); 
    $view = $layout->getView(); 
    $config = new Zend_Config_Xml(APPLICATION .'/config/navigation.xml', 'nav'); 
    $container = new Zend_Navigation($config); 
    $view->navigation($container); 
} 

및 마지막으로 layout.phtml보기에서 객체는 메뉴를 반환해야합니다.

<!-- application/layouts/scripts/layout.phtml --> 
<?php echo $this->doctype() ?> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head>   
    <title>Zend Blog !</title> 
    <?php echo $this->headLink()->appendStylesheet('/css/global.css')?> 
</head> 
<body> 
    <div id="header"> 
     <div id="header-logo"> 
      <b>Blog Me !</b> 
     </div> 
    </div> 
    <div id="menu">    
     <?php echo $this->navigation()->menu() ?> 
    </div> 
    <div id="content"> 
    <?php echo $this->layout()->content ?> 
    </div> 
</body> 
</html> 

메뉴 브라우저에서 내 앱을 시작할 때 표시되지 않지만 잘못 생각한 아이디어는 겸손하게받습니다. 두 _와 기능 __initNavigation 이름을하지 않은 경우 미리 칼레 요한슨

답변

1

덕분에 그때는 아마 코드가 자동으로 실행 할 것으로 예상 목적에 밑줄. 자동으로 실행하려면 하나의 밑줄을 사용해야합니다.

또 다른 가능한 문제점은 _initNavigation_initView 전에 실행된다는 것입니다. Zend는 알파벳 순서로 이러한 리소스를 처리합니다. 그러나이 코드에서는 $view에 액세스 할 필요가 없습니다. 당신은 탐색 용기를 저장하기 위해 Zend_Registry를 사용할 수없는 용기가 지정되지 않은 경우

protected function _initNavigation() { 
    $config = new Zend_Config_Xml(APPLICATION .'/config/navigation.xml', 'nav'); 
    $container = new Zend_Navigation($config); 
    Zend_Registry::set('Zend_Navigation', $container); 
} 

Zend_Navigation 레지스트리 항목은 어떤 네비게이션 도우미가 기본적으로 사용됩니다.

1

내가 코드가 올바른 생각, 당신의 보호 기능은 __initNavigation()__initNavigation()_initNavigation()

1

음 난`감동, 정말 빠른 답변을 변경 그런 다음 _initNavigation()

에 문제를 하나의 _를 사용한다 몇 가지 측면이 있었는데, 처음에는 단 하나의 밑줄 기호를 사용하는 것에 대해 두 분 모두에게 감사드립니다. 그리고 난 t는 알고 보니, 내가 잘못 입력 않았다

$config = new Zend_Config_Xml(APPLICATION .'/config/navigation.xml', 'nav'); 

가 있어야

$config = new Zend_Config_Xml(APPLICATION_PATH .'/configs/navigation.xml', 'nav'); 

내 잘못. 그리고 마지막으로 navigation.xml 파일의 miss - 노드 안에는 각 "페이지"노드를 둘러싼 노드가 있어야합니다. 예를 들어 가정용입니다. 그래야합니다

<configdata> 
    <nav> 
     <home>  
     <label>Home</label> 
     <controller>index</controller> 
     <action>index</action> 
     </home> 

그게 전부입니다!

다시 한번 귀하의 힌트와 팁을 바르게 고맙게 생각합니다.

싱클 칼 요한슨