Вопрос: Как создать навигацию, позволяющую применять разные классы к различным подпозициям, из многомерного массива?Сгенерировать навигацию из многомерного массива
Вот как я делал это прежде, чем я имел какой-либо необходимости для навигации многоуровневого:
Home
Pics
About
и был создан по телефону (NAV):
function nav(){
$links = array(
"Home" => "home.php",
"Pics" => "pics.php",
"About" => "about.php"
);
$base = basename($_SERVER['PHP_SELF']);
foreach($nav as $k => $v){
echo buildLinks($k, $v, $base);
}
}
Вот buildLinks ():
function buildLinks($name, $page, $selected){
if($selected == $page){
$theLink = "<li class=\"selected\"><a href=\"$page\">$name</a></li>\n";
} else {
$thelink = "<li><a href=\"$page\">$name</a></li>\n";
}
return $thelink;
}
Мой вопрос снова:
как бы я достичь следующей СЧА (и обратите внимание на то, что видимые суб навигационные элементы присутствуют только тогда, когда на этой конкретной страницы):
Home
something1
something2
Pics
About
и ...
Home
Pics
people
places
About
То, что я пытался
От взгляда на это кажется, что некоторый итератор в SPL был бы хорош для этого, но я не уверен, как подойти к этому. Я играл с RecursiveIteratorIterator, но я не уверен, как применять другой стиль только к элементам подменю, а также как показывать эти элементы только в том случае, если вы находитесь на правильной странице.
Я построил этот массив, чтобы проверить с, но не знают, как работать с деталями submenu1 индивидуально:
$nav = array(
array(
"Home" => "home.php",
"submenu1" => array(
"something1"=>"something1.php",
"something2" => "something2.php")
),
array("Pics" => "pics.php"),
array("About" => "about.php")
);
Следующая распечатает много в порядке, но как я могу применить, скажем, класс имя в подменю 1 или показывать только, когда человек включен, скажем, на странице «Главная»?
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($nav));
foreach($iterator as $key=>$value) {
echo $key.' -- '.$value.'<br />';
}
И это заставляет меня:
Home
something1
something2
Pics
About
Но у меня нет никакой возможности применять классы этих подпунктов и никоим образом не только отображать их условно, потому что я не вижу, как предназначаться только эти элементы.
Использование его вне рамок всей структуры кажется менее простым. В любом случае сложнее использовать другие компоненты, такие как Mail или Log. – Lothar
Теперь, когда я подробно рассмотрел его, не представляется возможным интегрировать Zend_Navigation в сайт без использования всех компонентов MVC этой структуры. Поправьте меня если я ошибаюсь. – Lothar
Если вам не нужны модели и контроллеры zend. Вам не нужно даже использовать представление, но в этом случае вам нужно сделать некоторые трюки, чтобы легко использовать Zend_View_Helper_Navigation, что является важной частью Zend_Navigation. – takeshin