BIG Menu a SubMenu cez DB v Nette

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
SontoEremo
Člen | 341
+
0
-

Zdravím,
Viem, že som to už riešil dávnejšie no môj problém sa vzťahuje na výsledok generovania toho menu

Mám @layout.latte kde generujem menu z databázi

<div class="primary">
		<div class="navbar navbar-default" role="navigation">
			<button type="button" class="navbar-toggle btn-navbar collapsed" data-toggle="collapse" data-target=".primary .navbar-collapse">
				<span class="text">Menu</span>
				<span class="icon-bar"></span>
				<span class="icon-bar"></span>
				<span class="icon-bar"></span>
			</button>
			<nav class="collapse collapsing navbar-collapse">
				<ul class="nav navbar-nav navbar-center">
				{foreach $BigPublicMenus as $publicMenu}
				{var $childs = $publicMenu->related('vl_public_db_bigmenu','vl_public_db_menu_parent_id')}
				{if $childs->count('*') > 0}
				<li class="parent megamenu five-columns promo">
					<a href="#">
						<i class="fa fa-{$publicMenu->vl_public_db_menu_icon}"></i>
						{$publicMenu->vl_public_db_menu_title}
					</a>
					<ul class="sub">
						<li class="sub-wrapper">
							<div class="sub-list">
							{foreach $childs as $subchild}
							{first 10}<div class="box">{/first}
								<ul>
									<li>
										<a n:href="$subchild->vl_public_db_menu_link">
											<i class="fa fa-{$subchild->vl_public_db_menu_icon}"></i>
											{$subchild->vl_public_db_menu_title}
										</a>
									</li>
								</ul>
							{last 10}</div>{/last}
							{/foreach}
							</div>
							<div class="promo-block bg">
					  			<img src="" width="240" height="434" alt="">
							</div><!-- .promo-block -->
						</li>
					</ul>
				</li>
				{else}
				<li>
					<a n:href="$publicMenu->vl_public_db_menu_link">
						<i class="fa fa-{$publicMenu->vl_public_db_menu_icon}"></i>
						{$publicMenu->vl_public_db_menu_title}
					</a>
				</li>
				{/if}
				{/foreach}
				</ul>
			</nav>
			</div>
			</div><!-- .primary -->

Môj problém je, že ako si dám výsledok v zdrojovom kóde výsledok je

<div class="primary">
		<div class="navbar navbar-default" role="navigation">
			<button type="button" class="navbar-toggle btn-navbar collapsed" data-toggle="collapse" data-target=".primary .navbar-collapse">
				<span class="text">Menu</span>
				<span class="icon-bar"></span>
				<span class="icon-bar"></span>
				<span class="icon-bar"></span>
			</button>
			<nav class="collapse collapsing navbar-collapse">
				<ul class="nav navbar-nav navbar-center">
				<li>
					<a href="/public/">
						<i class="fa fa-home"></i>
						Menu 1
					</a>
				</li>
				<li>
					<a href="#error: Destination must be non-empty string.">
						<i class="fa fa-tasks"></i>
						Menu 2
					</a>
				</li>
				<li class="parent megamenu five-columns promo">
					<a href="#">
						<i class="fa fa-code"></i>
						Menu 3
					</a>
					<ul class="sub">
						<li class="sub-wrapper">
							<div class="sub-list">
							<div class="box">
								<ul>
									<li>
										<a href="#error: Destination must be non-empty string.">
											<i class="fa fa-bullhorn"></i>
											Sub Menu 1
										</a>
									</li>
								</ul>


								<ul>
									<li>
										<a href="#error: Destination must be non-empty string.">
											<i class="fa fa-video-camera"></i>
											Sub Menu 2
										</a>
									</li>
								</ul>


								<ul>
									<li>
										<a href="#error: Destination must be non-empty string.">
											<i class="fa fa-volume-up"></i>
											Sub Menu 3
										</a>
									</li>
								</ul>


								<ul>
									<li>
										<a href="#error: Destination must be non-empty string.">
											<i class="fa fa-search"></i>
											Sub Menu 4
										</a>
									</li>
								</ul>


								<ul>
									<li>
										<a href="#error: Destination must be non-empty string.">
											<i class="fa fa-cloud-upload"></i>
											Sub Menu 5
										</a>
									</li>
								</ul>


								<ul>
									<li>
										<a href="#error: Destination must be non-empty string.">
											<i class="fa fa-shopping-cart"></i>
											Sub Menu 6
										</a>
									</li>
								</ul>


								<ul>
									<li>
										<a href="#error: Destination must be non-empty string.">
											<i class="fa fa-envelope"></i>
											Sub Menu 7
										</a>
									</li>
								</ul>


								<ul>
									<li>
										<a href="#error: Destination must be non-empty string.">
											<i class="fa fa-flask"></i>
											Sub Menu 8
										</a>
									</li>
								</ul>


								<ul>
									<li>
										<a href="#error: Destination must be non-empty string.">
											<i class="fa fa-group"></i>
											Sub Menu 9
										</a>
									</li>
								</ul>


								<ul>
									<li>
										<a href="#error: Destination must be non-empty string.">
											<i class="fa fa-gamepad"></i>
											Sub Menu 10
										</a>
									</li>
								</ul>
							</div>
							<div class="box">
								<ul>
									<li>
										<a href="#error: Destination must be non-empty string.">
											<i class="fa fa-home"></i>
											2 BOX
										</a>
									</li>
								</ul>


								<ul>
									<li>
										<a href="#error: Destination must be non-empty string.">
											<i class="fa fa-cloud-upload"></i>
											2 BOX
										</a>
									</li>
								</ul>
							</div>
							</div>
							<div class="promo-block bg">
					  			<img src="" width="240" height="434" alt="">
							</div><!-- .promo-block -->
						</li>
					</ul>
				</li>
				</ul>
			</nav>
			</div>
			</div><!-- .primary -->

generuje mi to v box-e

<ul>
									<li>
										<a href="#error: Destination must be non-empty string.">
											<i class="fa fa-bullhorn"></i>
											Sub Menu 1
										</a>
									</li>
								</ul>


								<ul>
									<li>
										<a href="#error: Destination must be non-empty string.">
											<i class="fa fa-video-camera"></i>
											Sub Menu 2
										</a>
									</li>
								</ul>


								<ul>
									<li>
										<a href="#error: Destination must be non-empty string.">
											<i class="fa fa-volume-up"></i>
											Sub Menu 3
										</a>
									</li>
								</ul>


								<ul>
									<li>
										<a href="#error: Destination must be non-empty string.">
											<i class="fa fa-search"></i>
											Sub Menu 4
										</a>
									</li>
								</ul>


								<ul>
									<li>
										<a href="#error: Destination must be non-empty string.">
											<i class="fa fa-cloud-upload"></i>
											Sub Menu 5
										</a>
									</li>
								</ul>


								<ul>
									<li>
										<a href="#error: Destination must be non-empty string.">
											<i class="fa fa-shopping-cart"></i>
											Sub Menu 6
										</a>
									</li>
								</ul>


								<ul>
									<li>
										<a href="#error: Destination must be non-empty string.">
											<i class="fa fa-envelope"></i>
											Sub Menu 7
										</a>
									</li>
								</ul>


								<ul>
									<li>
										<a href="#error: Destination must be non-empty string.">
											<i class="fa fa-flask"></i>
											Sub Menu 8
										</a>
									</li>
								</ul>


								<ul>
									<li>
										<a href="#error: Destination must be non-empty string.">
											<i class="fa fa-group"></i>
											Sub Menu 9
										</a>
									</li>
								</ul>


								<ul>
									<li>
										<a href="#error: Destination must be non-empty string.">
											<i class="fa fa-gamepad"></i>
											Sub Menu 10
										</a>
									</li>
								</ul>

Ako to mám prosím Vás vyladiť aby bol výsledok

<li class="sub-wrapper">
<div class="sub-list">
<div class="box">
<ul>
 <li><a href="#">SubMenu 1</a></li>
 atď ...
</ul>
</div>
</div>
</li>

A nie 100 krát ul ale iba raz v tom boxe

Petr Hudík
Člen | 49
+
0
-

Pokud má v jednom boxu být pouze ul pouze jednou, tak bych ho doplnil přímo do makra {first}. Výsledný kód by mohl vypadat asi takto:

{foreach $childs as $subchild}
	{first 10}<div class="box"><ul>{/first}
	<li>
        	<a n:href="$subchild->vl_public_db_menu_link">
                	<i class="fa fa-{$subchild->vl_public_db_menu_icon}"></i>
                        	{$subchild->vl_public_db_menu_title}
                </a>
        </li>

	{last 10}</ul></div>{/last}
{/foreach}
SontoEremo
Člen | 341
+
0
-

@PetrHudík Skúšal som ale som si najprv myslel, že by to bolo zlé ale aspoň si mi potvrdil, že to môžem kľudne tak použiť :)