Overenie obsahu z controleru v latte [2.0.12]

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

Ahojte,

je mozne overit ci controler nieco vykreslil ? a vpripade ze nic tak skry jeho html block?

priklad: mam componenatu na vykreslenie navigacie na stranke, ktora ale podlieha ACL takze odfiltruju vsetky zakazane odkazy.. componenta ma dve moznosti ako snou pracovat

  1. len ju zavolam a ona si uz sama vnutorne nacita podrebne udaje
  2. vlozim jej ja co ma vykreslit

u druhej moznosti je to pohodicka lebo viem co sa ma zobrazit takze teoreticky si viem v pripade, ze niesu data html block skryt ale v 1. pripade je to zlozitejsie, kedze netusim ci vobec sa nieco vykresli.
Ako vidno dole v ukazke volam control navigation, ktory moze nemusi sa vykreslit. V pripade ak sa nic zo sablony nevrati potreboval by som skryt „<div class="navigation“>"

<!--sablona componenty-->
{block #navigation}
	<ul n:inner-foreach="$menu as $item">
	....
	{include #this, ..}
	</ul>
{/block}

<!--sablona presenteru-->
<div class="user_plugin">
	<div class="navigation">
		{control navigation}
	</div>
	....
</div>
vvoody
Člen | 910
+
0
-

div.navigation má byť logicky súčasť komponenty, potom to vyriešiš jednoducho v komponente

HappyFace
Člen | 162
+
0
-

vvoody napsal(a):

div.navigation má byť logicky súčasť komponenty, potom to vyriešiš jednoducho v komponente

ok ale to neriesi to co potrebuje :/

Dajme tomu, ze ho tam natrepem potom tu je <div class=„user_plugin“> ktory sa musi tak tiez schovat, ak sa ani jednen z controlerov nevykresli. Nespominal som to vysie lebo som sa domieval, ze mi niekto poradi ako sa to(na zaklade obsahu z controleru[lubovalneho] ovplivnit „html block“ v ktorom sa ma zobrazit) riesi a nebude rozoberat logiku example kodu. V skutocnosti sablona navigacie je obrovska.

SparkCZ
Člen | 22
+
0
-

Co třeba mít v komponentě nějakou metodu, která vrátí jestli se něco v komponentě zobrazí a pak jen udělat jednoduchou podmínku?

<div class="navigation" n:if="$_control[navigation]->hasItem()">
    {control navigation}
</div>
HappyFace
Člen | 162
+
0
-

SparkCZ napsal(a):

Co třeba mít v komponentě nějakou metodu, která vrátí jestli se něco v komponentě zobrazí a pak jen udělat jednoduchou podmínku?

<div class="navigation" n:if="$_control[navigation]->hasItem()">
    {control navigation}
</div>

juu :) to vypada velmi dobre, idem vyskusat.. zatial velka vdaka :)

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Lze použít ještě jeden trik (pokud jsem dobře pochopil zadání):

{capture $navigation|trim}{control navigation}{/capture}
<div class="navigation" n:if="$navigation">
	{!$navigation}
</div>
HappyFace
Člen | 162
+
0
-

vojtech.dobes napsal(a):

Lze použít ještě jeden trik (pokud jsem dobře pochopil zadání):

{capture $navigation|trim}{control navigation}{/capture}
<div class="navigation" n:if="$navigation">
	{!$navigation}
</div>

Bajecne toto je uplne presne co som potreboval.. more thx ;)

Editoval HappyFace (2. 9. 2013 11:44)