2012-02-13 3 views
3

Я пытаюсь создать пользовательскую навигацию для ZEND навигации, но у меня есть два вопроса:Zend Navigation Пользовательские Rendering

  1. Как передать переменные пользовательские частичное PHTML, или, если это возможно?
  2. Как установить класс через все активное дерево меню?

Это мой код до сих пор:

в контроллере:

$config = new Zend_Config($menu); 
$nav = new Zend_Navigation(); 
$nav->addPages($config); 
$this->view->nav = $nav; 

в представлении:

<?php echo $this->navigation($this->nav)->menu()->setPartial('menu.phtml')->render(); ?> 

и мой частичный:

<?php 

function genMenu($container) 
{ 
    foreach ($container as $page) 
    { 
     echo '<li>'; 

     $href = $page->uri; 
     $target = '_self'; 

     echo '<a href="' . $href . '" target="' . $target . '">' . $page->label . '</a>'; 

     if (!empty($page->pages)) 
     { 
      echo '<ul>'; 

      genMenu($page->pages); 

      echo '</ul>'; 
     } 

     echo '</li>'; 
    } 
} 

echo '<ul>'; 

genMenu($this->container); 

echo '</ul>'; 

Спасибо всем заранее!

ответ

4
echo $this->navigation($this->nav)->menu()->setPartial('menu.phtml')->render(); ?> 

не совсем правильно, вы имеете право идею, но попробовать

//This will pass a valid container to your partial with the $this->nav 
echo $this->navigation()->menu()->renderPartial($this->nav,'menu.phtml') ?> 

здесь является апи:

public function renderPartial(Zend_Navigation_Container $container = null, 
            $partial = null) 

также этот бит выглядит немного шаткий, а также:

$config = new Zend_Config($menu); 
$nav = new Zend_Navigation(); 
$nav->addPages($config); 
$this->view->nav = $nav; 

Не думаю -> addPages() - это то, что Вы хотите здесь, я думаю, что вам нужно:

//where $menu is the container and is config(.ini) object not .xml 
//for xml use Zend_Config_Xml or Zend_Config_Json for JSON 
$config = new Zend_Config($menu); 
$nav = new Zend_Navigation($config); 
//assign the container to the view 
$this->view->nav = $nav; 
+0

Спасибо за исправление на моем коде, я вроде как новый на zend atm! Тем не менее, у меня такие же сомнения. Как передать вары на частичные, и как узнать активное дерево. Это очень поможет мне в моем частичном построителе: \ – MGP

+0

@MGP в любое время, когда вы называете частичное или partiaLoop что одна из вещей, которую требует конструктор, - это модель (например, read array() или object()). renderPartial() не является исключением, первым аргументом является модель, в данном случае объект Zend_Navigation_Container. – RockyFord

+0

и как получить активное дерево, например, для добавления определенного класса ко всем ссылкам в этом дереве (или панировке) к последнему ребенку? – MGP

2

См HERE

Добавьте эту строку в допустимый ACL, если использовать ACL

if ($this->navigation()->accept($page)) 

Ее результат

...  
    foreach ($iterator as $page) { 
     //VALID ACL 
     if ($this->navigation()->accept($page)) { 
      ... 
      ... 
     } 
    } 
    .. 
Смежные вопросы