@sdoksanbir, rekürsif fonksiyonda echo yapmak yerine, 16 numaralı mesajımda belirttiğim gibi bir dizi döndürürseniz, view'e bu diziyi gönderip, istediğiniz gibi, ul-li, select vb için kullanabilirsiniz. @Rony'den sonra kategorileri getiren fonksiyon doğrudan dizi döndürecek:
//Controller'de
public function getCats($parentId)
{
$kats = Kategori::all(); //$kats bir collection'dur, ama bir dizi gibi de erişilebilir.
$liste = $this->listenke($kats, $parentId);
return View::make('birview', $liste);
}
protected function listenke($array, $parent, $derinlik = -1, &$html = array()) {
++$derinlik;
foreach ($array as $row) {
if ($row['parentId'] == $parent) {
$html[] = array("id"=>$row['id'], "ad"=>$row['name'], "derinlik"=>$derinlik);
listenke($array, $row['id'], $derinlik, $html);
}
}
return $html;
}
$liste dizisini view'de istediğiniz gibi kullanabilirsiniz.
Ekleme: Form::select ve Html::ul metodları için if içindeki
$html[] = array("id"=>$row['id'], "ad"=>$row['name'], "derinlik"=>$derinlik);
satırı
$html[$row['id']] = str_repeat('-',$derinlik).$row['name'];
olarak değiştirilirse Blade'de daha kolay olabilir.