The question: How do I generate navigation, allowing for applying different classes to different sub-items, from a multi-dimensional array?
Burada çok düzeyli navigasyon için herhangi bir ihtiyaç vardı önce bunu yaptığını nasıl:
Home
Pics
About
ve nav arayarak oluşturulan ():
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);
}
}
İşte buildLinks () 'dir:
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;
}
My question, again:
nasıl aşağıdaki nav ulaşmak (ve görünür alt gezinme öğeleri zaman bu özel sayfada sadece mevcut olduğunu fark olur):
Home
something1
something2
Pics
About
ve ...
Home
Pics
people
places
About
What I've tried
Ona bakarak bu SPL bazı yineleyici bunun için iyi bir uyum olacağını görünüyor ama bu yaklaşım nasıl emin değilim. Ben RecursiveIteratorIterator ile yaklaşık oynadı ama doğru sayfada olup olmadığını sadece bu öğeleri göstermek için nasıl da sadece alt menü öğeleri ve farklı bir stil uygulamak için nasıl emin değilim.
Ben test etmek için ama tek SubMenu1 öğeleri ile çalışmak nasıl bilmiyorum bu dizi inşa:
$nav = array(
array(
"Home" => "home.php",
"submenu1" => array(
"something1"=>"something1.php",
"something2" => "something2.php")
),
array("Pics" => "pics.php"),
array("About" => "about.php")
);
Aşağıdaki sırayla sürü çıktı ama nasıl başvurabilirim, bir sınıf adı SubMenu1 öğeleri söylemek ya da kişi "Ana" sayfa, diyelim ki, üzerinde yalnızca onlara göstermek?
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($nav));
foreach($iterator as $key=>$value) {
echo $key.' -- '.$value.'<br />';
}
Ve bu beni alır:
Home
something1
something2
Pics
About
Ama ben sadece bu unsurları nasıl hedef görmüyorum çünkü o alt kalemleri ve sadece şartlı bunları görüntülemek için hiçbir şekilde sınıfları uygulamak için hiçbir yolu yoktur.