Funkcija getTree vraća izlaz sledećeg formata:
Code:
podmeni 1
---- 3rd level meni 1/1
---- 3rd level meni 1/2
---- 3rd level meni 1/3
---- 3rd level meni 1/4
podmeni 2
---- 3rd level meni 2/1
---- 3rd level meni 2/2
---- 3rd level meni 2/3
---- 3rd level meni 2/4
podmeni 3
podmeni 4
---- 3rd level meni 4/1
---- 3rd level meni 4/2
---- 3rd level meni 4/3
---- 3rd level meni 4/4
podmeni 1
---- 3rd level meni 1/1
---- 3rd level meni 1/2
---- 3rd level meni 1/3
---- 3rd level meni 1/4
podmeni 2
---- 3rd level meni 2/1
---- 3rd level meni 2/2
---- 3rd level meni 2/3
---- 3rd level meni 2/4
podmeni 3
podmeni 4
---- 3rd level meni 4/1
---- 3rd level meni 4/2
---- 3rd level meni 4/3
---- 3rd level meni 4/4
Problem je u tome što ne znam kako da izvedem da funkcija getTree ne ispisuje rezultat direktno(pošto se nalazi u modelu), već da mi vrati kao rezultat niz ili šta bi već bilo zgodno za skladištenje ove hierarhije.
Code:
public function getSubMenu($parId)
{
$dbAdapter = Zend_Registry::getInstance()->dbAdapter;
$query = "SELECT * FROM `menu` WHERE parent = $parId";
$res = $dbAdapter->query($query);
$rows = $res->fetchAll();
return $rows;
}
public function getTree($parId)
{
$rows = $this->getSubMenu($parId);
foreach($rows as $row)
{
if($row['level1'] == 0 && $row['level2'] == 0)
{
echo " ";
}
printf("<a href='%s'>%s</a><br />", $row['url'], $row['naziv']);
$this->getTree($row['id']);
}
}
public function getSubMenu($parId)
{
$dbAdapter = Zend_Registry::getInstance()->dbAdapter;
$query = "SELECT * FROM `menu` WHERE parent = $parId";
$res = $dbAdapter->query($query);
$rows = $res->fetchAll();
return $rows;
}
public function getTree($parId)
{
$rows = $this->getSubMenu($parId);
foreach($rows as $row)
{
if($row['level1'] == 0 && $row['level2'] == 0)
{
echo " ";
}
printf("<a href='%s'>%s</a><br />", $row['url'], $row['naziv']);
$this->getTree($row['id']);
}
}
Tabela meni sadrži još i parametre level1 i level2. Ako je level1 = 1 i level2 = 0 meni je top level, ako je level1 = 0 i level2 = 1 u pitanju je podmeni, a ako su oba 0 onda radi se o trećem nivou.
P.S. Ne pitajte me ništa nisam ja projektovao bazu.