Zanořený selectlist subcategorie

vanaveno
Člen | 144
+
0
-

Ahojte, potřeboval bych prosím poradit
v prezenteru mám vytvořený form pro kategorie, které mají podkategorie.

$category = array(	);
	$menu = $this->categoryManager->getCategory()->where('type = ?','menu')->select('catId')->select('title')->fetchAll();

    foreach ($menu as $catId => $row) {
				//menu
              $category[$catId] = $row['title'];
              // Submenu
               $submenu = $this->categoryManager->getCategory()->where('parentId = ?', $catId)->select('catId')->select('parentId')->select('title')->fetchAll();
               foreach ($submenu as $catId => $row) {
              $category[$catId] =  $row['title'];}
                              }

	$form->addCheckboxList('catId', 'Kategorie:', $category)
			->setRequired();

Výběr kategorií bych chtěl vytvořit za pomocí slectlistu. Když jej teď nechám vykreslit, zobrazí se mi všechny selectboxy pod sebou. Rád bych vložil do submenu slectboxů class například submenu, abych jej mohl posunout trošku doprava, aby prostě bylo jasně vidět že jsou to subpoložky nějaké nadřazené kategorie. Akorát nevím jak na to. Mohli byste mi prosím s tím pomoci?

Děkuji

Kamil Valenta
Člen | 758
+
0
-

Udělej si v šabloně manuální renderování.

https://doc.nette.org/…ms/rendering#…

vanaveno
Člen | 144
+
0
-

kamil_v napsal(a):

Udělej si v šabloně manuální renderování.

https://doc.nette.org/…ms/rendering#…

O manuálním rendrování vím, ale nějak se mi to právě nedaří.

vanaveno
Člen | 144
+
0
-

Zkoušel jsem manuálně tohle,ale zase to ,mi vypíše vše.

{foreach $form[catId]->items as $catId => $row}
    <label n:name="catId:$catId"><input n:name="catId:$catId"> {$row}</label>
{/foreach}

Jak napsat

{foreach ...}
 <input ...
  {foreach ...}
	<input ...
  {/foreach}
{/foreach}
Kamil Valenta
Člen | 758
+
0
-

Ze struktury [id] = name nijak nepoznáš, jestli máš vykreslovat odsazeně, nebo ne.
Pokud je zanoření nanejvýš jednoúrovňové (neexistuje podkategorie v podkategorii), tak si předej $menu do šablony.
Pak v renderu budeš mít něco ve stylu:

{foreach $form[catId]->items as $catId => $row}
    <label n:name="catId:$catId">{if !empty($menu[$catId]->parentId)}<span class="indent"></span>{/if}<input n:name="catId:$catId"> {$row}</label>
{/foreach}

Pokud je zanoření neomezené, vrať si $menu jako pole polí a pak vykresluj rekurzivně.

vanaveno
Člen | 144
+
0
-

kamil_v napsal(a):

Ze struktury [id] = name nijak nepoznáš, jestli máš vykreslovat odsazeně, nebo ne.
Pokud je zanoření nanejvýš jednoúrovňové (neexistuje podkategorie v podkategorii), tak si předej $menu do šablony.
Pak v renderu budeš mít něco ve stylu:

{foreach $form[catId]->items as $catId => $row}
    <label n:name="catId:$catId">{if !empty($menu[$catId]->parentId)}<span class="indent"></span>{/if}<input n:name="catId:$catId"> {$row}</label>
{/foreach}

Pokud je zanoření neomezené, vrať si $menu jako pole polí a pak vykresluj rekurzivně.

Kurňa jsem blbý, jak to menu mám dostat do šablony?

Kamil Valenta
Člen | 758
+
+1
-

V render metodě $this->template->menu = $menu;
?