Vom MD Array zum Menu
Hallo zusammen, ich versuche aus einem MD Array ein Menu zu generieren.
Dazu habe ich folgende Ausgabe:
Ich kriege immer den Fehler und es erscheind keine Subnavi:
Notice: Undefined variable: page in /home/httpd/vhosts/werbix.ch/httpdocs/content/navitest.php on line 66
Notice: Undefined variable: page in /home/httpd/vhosts/werbix.ch/httpdocs/content/navitest.php on line 74
Dies entspricht dem Inhalt:
=> (if( $page == $values[1] ))
=> elseif( in_array_recursive($page,$submenu[$values[1]],true) )
Leider habe ich keine Ahnung was das Problem ist, kann mir bitte jemand weiterhelfen?
lg
$menu = array ( '<i class="fa fa-star "></i> Favoriten', 'favoriten', 1 );
$submenu['favoriten'] [5] = array ( 'Seite 1', 'registrations_view', 1 );
$submenu['favoriten'][10] = array ( 'Seite 2', 'registrations_edit', 1 );
$menu = array ( '<i class="fa fa-paint-brush"></i> Deko', 'deko', 3 );
$submenu['deko'] [5] = array ( 'Termine', 'meetings', 3 );
$submenu['deko'][10] = array ( 'Neuen Termin erstellen', 'meetings_add', 3 );
$submenu['deko'][15] = array ( 'Benutzer', 'users', 3 );
$submenu['deko'][20] = array ( 'Neuen Benutzer erstellen', 'users_add', 3 );
$submenu['deko'][25] = array ( 'Klassen verwalten', 'classes', 3 );
$submenu['deko'][30] = array ( 'Fächer verwalten', 'subjects', 3 );
$menu = array ( '<i class="fa fa-paw "></i> Tiere', 'tiere', 1 );
$submenu['tiere'] [5] = array ( 'Allgemein', 'div', 3 );
$submenu['tiere'][10] = array ( 'Hunde', 'dog', 3 );
$submenu['tiere'][15] = array ( 'Katzen', 'cat', 1 );
Dazu habe ich folgende Ausgabe:
function in_array_recursive($needle, &$haystack, $case_sensitive=true)
{
if( !$case_sensitive )
$needle = strtolower($needle);
foreach($haystack as $v)
{
if( !is_array($v) )
{
if( !$case_sensitive )
$v = strtolower($v);
if( $needle == $v )
return true;
}
else
{
if( in_array_recursive($needle, $v, $case_sensitive) === true )
return true;
}
}
return false;
}
foreach ( $menu as $key => $values )
{
$class = '';
if( $page == $values[1] )
{
$class .= ' active';
}
else
{
if( !isset ( $submenu[$values[1]] ) )
$class .= ' no-submenu';
elseif( in_array_recursive($page,$submenu[$values[1]],true) )
$class .= ' active';
}
print '<li><a href="index.php?page='. $values[1] .'" class="nav-top-item' . $class . '">' . $values . '</a>';
}
Ich kriege immer den Fehler und es erscheind keine Subnavi:
Notice: Undefined variable: page in /home/httpd/vhosts/werbix.ch/httpdocs/content/navitest.php on line 66
Notice: Undefined variable: page in /home/httpd/vhosts/werbix.ch/httpdocs/content/navitest.php on line 74
Dies entspricht dem Inhalt:
=> (if( $page == $values[1] ))
=> elseif( in_array_recursive($page,$submenu[$values[1]],true) )
Leider habe ich keine Ahnung was das Problem ist, kann mir bitte jemand weiterhelfen?
lg
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 263439
Url: https://administrator.de/contentid/263439
Ausgedruckt am: 24.11.2024 um 17:11 Uhr
7 Kommentare
Neuester Kommentar
Hi.
Na PHP kennt die Variable
Wann wird diese den definiert ?
Wenn ich das richtig sehe, sollte
Irgendwo sollte es als eine Anweisung geben die dem folgendem Sinn entspricht:
Edit:
Ich sehe gerade die URL deiner Links
Verwendest du die Variable
~Arano
Na PHP kennt die Variable
$page
nicht !Wann wird diese den definiert ?
Wenn ich das richtig sehe, sollte
$page
eines Schlüsselwörter (favoriten/deko/tiere) enthalten, je nach dem wleche seite man gerade geöffnet hat... WENN man überhaupt eine Seite geöffnet hat.Irgendwo sollte es als eine Anweisung geben die dem folgendem Sinn entspricht:
$page = 'favoriten';
// oder
$page = extract_key_from_url_function();
Edit:
Ich sehe gerade die URL deiner Links
"index.php?page='. $values[1] .'"
Verwendest du die Variable
$page
etwa direkt aus der URL ? (register_globals = On)~Arano
Hallo.
Denn das muss ja dynamisch sein falls eine andere Kategorie geöffnet ist (deko/tiere),
Nein, die Untermenüs werden nicht angezeigt. Es gibt ja auch keine Script das dafür verantworlich wäre... diesen Part muss du wohl noch integrieren.
zZ. gibt es ja nur
Und diese Schleife durchläuft nur
Dieser Teil ist die Stelle an der du ansetzen must:
Die erste Hälfte bestimmt einen CSS-Klassennamen für dan Fall das es KEINE Untermenüs gibt, die andere Hälfte WENN es Untermenüs gibt. Aber wie gesagt, die Untermenüs werden nirgends weiter behandelt. Die zweite Hälfte muss also um die Ausgabe der entsprechenden Untermenüs ergänzt werden.
~Arano
$page = 'favoriten';
hast du doch nicht fest in das Script geschrieben oder !?Denn das muss ja dynamisch sein falls eine andere Kategorie geöffnet ist (deko/tiere),
Nein, die Untermenüs werden nicht angezeigt. Es gibt ja auch keine Script das dafür verantworlich wäre... diesen Part muss du wohl noch integrieren.
zZ. gibt es ja nur
foreach ( $menu as $key => $values )
Und diese Schleife durchläuft nur
$menu
also die Hauptmenüs.Dieser Teil ist die Stelle an der du ansetzen must:
if( !isset ( $submenu[$values[1]] ) )
$class .= ' no-submenu';
elseif( in_array_recursive($page,$submenu[$values[1]],true) )
$class .= ' active';
~Arano
Hallo.
Sorry sorry sorry, da habe ich mit vertan !
Das if-else das ich im letztem Post erwähnte ist NICHT die stelle wo du ansetzen sollst, das war quatsch.
Aber es sieht so aus, als wäre die das auch schon aufgefallen.
Ja du benötigst noch eine zweite Schleifen !
Mit der ersten gehst du durch das Hauptmenü ($menü), dem erstem Array, und gibst
In die Zeile 35 wo momentan noch ein Link steht muss die zweite Schleife hin.
Vielleicht so:
Habe das jetzt einfach so getippt, kann Fehler enthalten und muss generell nicht passen
~Arano
Sorry sorry sorry, da habe ich mit vertan !
Das if-else das ich im letztem Post erwähnte ist NICHT die stelle wo du ansetzen sollst, das war quatsch.
Aber es sieht so aus, als wäre die das auch schon aufgefallen.
Ja du benötigst noch eine zweite Schleifen !
Mit der ersten gehst du durch das Hauptmenü ($menü), dem erstem Array, und gibst
- den Hauptlink aus und
- mit der zweiten Schleife die einzelnen Untermenüs ($submenu) aus dem zweitem Array.
In die Zeile 35 wo momentan noch ein Link steht muss die zweite Schleife hin.
Vielleicht so:
// wenn untermenüs zum hauptmenü vorhanden sind
if( isset($submenu[$values[1]]) )
{
// durchlaufe submenü array und...
foreach( $submenu[$values[1]] as $subKey => $subValues )
{
// ...gebe links in listenform aus
echo '<li>
<a href='.$subValues[2].'>'.$subValues.'</a>
</li>';
}
}
// wenn keine untermenüs vorhanden sind, mach nix
//else { }
~Arano