konto usunięte
Temat: Wyświetlanie drzewa kategorii w Select - problem z...
WitamOstatnio walcze z sorotwaniem drzewa kategorii wyświetlanych w formularzu za pomocą SELECT. Udało mi się dostosować skrypt zaprezentowany na blogu Crisp do potrzeb Kohana 3.3
Nawet działa. Teraz mam problem z dodaniem wcięcia dla kategorii potomków, czyli:
Rodzic 1
- - Potomek 1
- - Potomek 2
Rodzic 2
itd.
Może macie pomysły jak to ugryźć? Z góry dzięki za rady. Poniżej prezentuje kod:
Helper z metodą do sortowania rekursywnego:
class Kohana_Treebuilder extends Kohana {
public static function buildMenu($parentId, $menuData)
{
$sorted_categories = array();
if (isset($menuData['parents'][$parentId]))
{
foreach ($menuData['parents'][$parentId] as $itemId)
{
$sorted_categories[$itemId] = $menuData['items'][$itemId];
// find childitems recursively
$sorted_categories = Arr::merge($sorted_categories, Kohana_Treebuilder::buildMenu($itemId, $menuData));
}
}
return $sorted_categories;
}
Controller:
$categories = ORM::factory('Category')
->find_all();
View:
foreach ($categories as $menuItem)
{
$menuData['items'][$menuItem->id] = $menuItem->category;
$menuData['parents'][$menuItem->category_parent_id][] = $menuItem->id;
}
$sorted_categories = Kohana_Treebuilder::buildMenu(0, $menuData);
//A na koniec juz tylko wyswietlanie:
echo Form::select('category',$sorted_categories, $post['category']);