Tengo una matriz multidimensional en PHP producida por los grandes ejemplos de cio y ftrotter (soy arreglo utilice ftrotterrs en la variante matrices):PHP matriz multidimensional de la lista desordenada, la construcción de ruta URL
Turn database result into array
He hecho esto en un ancho de lista desordenado este método:
public function outputCategories($categories, $startingLevel = 0)
{
echo "<ul>\n";
foreach ($categories as $key => $category)
{
if (count($category['children']) > 0)
{
echo "<li>{$category['menu_nl']}\n";
$this->outputCategories($category['children'], $link
, $start, $startingLevel+1);
echo "</li>\n";
}
else
{
echo "<li>{$category['menu_nl']}</li>\n";
}
}
echo "</ul>\n";
}
Hasta ahora todo bien.
Ahora quiero usar el campo url_nl para construir las direcciones URL usadas como enlaces en el menú. La url tiene que reflejar el departamento del enlace en el árbol agregando/url_nl para cada paso en el árbol.
Mi objetivo:
- item 1 (has link: /item_1)
* subitem 1 (has link: /item_1/subitem_1)
* subitem 2 (has link: /item_1/subitem_1)
* subsubitem 1 (has link: /item_1/subitem_2/subsubitem_1)
- item 2 (has link: /item_2)
la tabla
id
id1 (parent id)
menu_nl
url_nl
title_nl
etc
Lo que tengo hasta ahora:
public function outputCategories($categories, $link, $start, $startingLevel = 0)
{
// if start not exists
if(!$start)
$start = $startingLevel;
echo "<ul>\n";
foreach ($categories as $key => $category)
{
$link.= "/".$category['url_nl'];
if($start != $startingLevel)
$link = strrchr($link, '/');
if (count($category['children']) > 0)
{
echo "<li>".$start." - ".$startingLevel.
"<a href='$link'>{$category['menu_nl']}</a> ($link)\n";
$this->outputCategories($category['children'], $link
, $start, $startingLevel+1);
echo "</li>\n";
}
else
{
$start = $startingLevel+1;
echo "<li>".$start." - ".$startingLevel.
"<a href='$link'>{$category['menu_nl']}</a> ($link)</li>\n";
}
}
echo "</ul>\n";
}
Como se puede ver en el ejemplo que he utilizado un campo url_nl cual es recursivamente agregado para que cada nivel de la lista tenga un enlace con una ruta que se usa como una url.
De todos modos, tengo problemas para crear estos enlaces, ya que no se restablecen correctamente al pasar a la lista jerárquica. Después de bajar al niño en la lista, el primero es correcto, pero el segundo no.
estoy atrapado aquí ...
es posible que desee reemplazar 'if (! $ Start)' con 'if (! Isset ($ start))'. – Johan
¡Buena sugerencia! – Klaaz