2011-07-14 17 views
1

これはなぜ機能していないのかわかりません。 item要素は常に表示されたままです。私は、最新のリリースを使用していますし、私のメニューは次のようになります。レイアウトでZend Framework:ナビゲーション項目は引き続き表示されます

public function hook_menu() 
{ 
    $menu['menuPageController'] = array(
     array(
      'label' => 'Start', 
      'controller' => 'page', 
      'action' => 'index' 
     ), 
     array(
      'label' => 'Produkter', 
      'controller' => 'page', 
      'action' => 'products', 
      'class' => 'beyond', 
      'pages' => array(
        array(
         'label' => 'default list a', 
         'controller' => 'page', 
         'action' => 'products', 
         'class' => 'beyond', 
         'params' => array(
          'lista' => 'a') 
        ), 
        array(
         'label' => 'list b', 
         'controller' => 'page', 
         'action' => 'products', 
         'class' => 'beyond', 
         'params' => array(
          'listb' => 'b') 
        ), 

        array(
         'label' => 'list c', 
         'controller' => 'page', 
         'action' => 'products', 
         'class' => 'beyond', 
         'params' => array(
          'listc' => 'c') 
        ), 

       ) 
     ), 
     array(
      'label' => 'item', 
      'controller' => 'page', 
      'action' => 'product', 
      'visible' => false, 
      'params' => array(
      'id' => null) 
     ), 
     array(
      'label' => 'Filhanteraren', 
      'controller' => 'page', 
      'action' => 'filemanager' 
     ) 
    ); 
    return $menu; 
} 

<div id="navigation-bar"> 
    <?php 
    // menu.phtml is partial, cms is module 
    $partial = 'partials/main-menu.phtml'; 
    $this->navigation()->menu()->setPartial($partial); 
    $this->navigation()->menu()->setRenderInvisible(false); 
    echo $this->navigation()->menu()->render(); ?> 
</div> 

私はそれが問題だとは思わないが、ここで、部分的にはとにかく

<?php 
// -- main-menu.phtml 
$html = array(); 
$html[] = '<ul class="navigation">'; 

foreach (Zend_Registry::get('main') as $page) 
{ 

    $check = $page->isActive(); 
    if($check) 
    { 
     $marker = "active"; 
    } 
    else 
    { 
     $marker = "inactive"; 
    } 
     $html[] = '<li class="' . $marker . '">'; 
     $html[] = $this->menu()->htmlify($page) . PHP_EOL; 
     $html[] = "</li>"; 
} 

$html[] = "</ul>"; 

print ('<div id="main-menu">' . join(PHP_EOL, $html) . '</div>'); 

// get the page asked for 
$uri = Zend_Controller_Front::getInstance()->getRequest()->getRequestUri(); 
$con = Zend_Controller_Front::getInstance()->getRequest()->getControllerName(); 
$act = Zend_Controller_Front::getInstance()->getRequest()->getActionName(); 

// check for child pages 
$list = Zend_Registry::get('main'); 
$menuItems = $list->toArray(); 
$function = new AppFiles_Functions_FunctionsHooks(); 
$current = $list->findOneBy('action', $act); 
$isChildof = $function->find_parent($menuItems, $act); 

print($isChildof); 

    $subhtml = '<ul class="navigation">'; 
      foreach ($current->pages as $subpage) 
      { 

       $check = $subpage->isActive(); 
       if($check) 
       { 
        $submarker = "active";    

       } 
       else 
       { 
        $submarker = "inactive"; 

       } 
       $subhtml .= '<li class="' . $submarker . '">'; 
       if ($href = $subpage->getHref()) $subhtml .= "<a href=\"{$href}\">"; 
       else $subhtml .= "<span>"; 


       $subhtml .= $subpage->getLabel(); 

       if ($href) $subhtml .= "</a>"; 
       else $subhtml .= "</span>"; 

       $subhtml .= "</li>"; 


       $subitem[$subpage->getHref()] = ''; 

      } 
    $subhtml .= "</ul>"; 

// print a container for the child pages    

?> 

<div id="sub-menu" class=""> 
<?php echo $subhtml; ?> 
</div> 
<?php 
print($uri); 
print "\n<br />"; 
print($con); 
print "\n<br />"; 
print($act); 
print "\n<br />"; 
?> 
+0

もちろん、私の一部でした。可視性をレンダリングする際にデフォルトを使用していないので、私は推測しません。そこで、欠落したメソッド呼び出しを含めるように部分を変更しました。 ($ページとしてなZend_Registry ::( 'メイン' を取得)) 'code' foreachの \t { \t \t \t \t $チェック= $ PAGE->のisActive(); \t \t IF($チェック) \t \t { \t \t \t $マーカー= "アクティブ"。他 \t \t} \t \t \t \t { \t \t \t $マーカー= "非アクティブ"。 \t \t} \t \t IF($ PAGE->のisVisible()) \t \t { \t \t \t $ HTML [] = ''; \t \t \t $ html [] = $ this-> menu() - > htmlify($ page)。 PHP_EOL; \t \t \t $ html [] = ""; \t \t} –

答えて

1

もちろん、それは私の部分的なものでした。レンダリングでデフォルトを使用しないので、可視性はチェックされません。だから私は、isVisible()へのメソッド呼び出しの欠落を含めるように部分を変更しました。

foreach (Zend_Registry::get('main') as $page) 
{ 

    $check = $page->isActive(); 
    if($check) 
    { 
     $marker = "active"; 
    } 
    else 
    { 
     $marker = "inactive"; 
    } 
    if($page->isVisible()) 
    { 
     $html[] = '<li class="' . $marker . '">'; 
     $html[] = $this->menu()->htmlify($page) . PHP_EOL; 
     $html[] = "</li>"; 
    } 
} 
1

ですFALSEの代わりに0(ゼロ)を使用してみてください:

'visible' => 0, 

これは、XMLナビゲーションファイルを使用して私のトリックをしました。

+0

私はWampサーバーでうまく動作しましたが、Linuxサーバーではゼロを使用しなければなりませんでした。@ golbarg – Garry

関連する問題