vypsání dat z asociativního pole

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

Ahoj,

mám takový dotaz, protože řeším výpis dat v latte do kterého posílám asociativní pole z db, kde potřebuju zajistit výpis nějakých dat nebo hlášku že nebylo nic nalezeno.

Asi to nedokážu dost dobře popsat takže ukážu nástřel kódu.

Presenter

			$this->template->perm = $this->context->permisions->getPerm($dot);

to mi vrátí

array(1=>'TRUE', 2=>'FALSE', 3=>'FALSE')

a pak v latte pomocí foreach řeším výpis

{block content}
{var $code = 3}
{dump $perm}

{foreach $perm as $key => $value}

{if $key === $code AND $value === 'TRUE'}
<div class="well">
	<h1>Povedlo se</h1>
		<p>...</p>
</div>
{breakIf $key === $code}
{else}
<div class="well">
	<h1>Nepovedlo se</h1>
		<p>...</p>
</div>
{/if}
{/foreach}

Jenže tím mi vyvstává problém a to, že mi např. při třech průchodech foreach vyhodnotí tři výpisy dat a já bych potřeboval pouze jeden výpis. A to buď jen jednou „Povedlo se“, nebo jen jednou „Nepovedlo se“.

Řešení pomocí foreach asi není nejšťastnější řešení, ale nevím jak jinak, nebo to jde zajistit i pomocí foreach???

Díky za rady

Kurtas
Člen | 109
+
0
-

Toz jak v klasickem PHP nutno pouzit break viz Latte macro breakif

milda404
Člen | 27
+
0
-

Kurtas napsal(a):

Toz jak v klasickem PHP nutno pouzit break viz Latte macro breakif

nad tím jsem taky uvažoval použít breakif jako to mám při splnění {breakIf $key === $view} ale nevím jak tam zakomponovat ten další buď nevypíše nic nebo vše :(

Nějaký nástřel?

Etch
Člen | 403
+
0
-

Co to je za úlet?? Co chceš, aby ti to v tomto případě vypsalo???

Snad takto ne:

{block content}
{var $code = 3}
{dump $perm}

{if $perm[$code]}
<div class="well">
    <h1>Povedlo se</h1>
        <p>...</p>
</div>
{else}
<div class="well">
    <h1>Nepovedlo se</h1>
        <p>...</p>
</div>
{/if}

Editoval Etch (25. 11. 2014 20:22)

japlavaren
Člen | 404
+
0
-

V presenteri (modely) by som pomocou array filter riešil, či sa to povedlo, alebo nie a to predával do šablony. Jedná sa o logiku a tá do šablony nepatrí.
(Predstav si šablonu ako ženu: tá by to tiež nepochopila… ;)

milda404
Člen | 27
+
0
-

Etch napsal(a):

Co to je za úlet?? Co chceš, aby ti to v tomto případě vypsalo???

Snad takto ne:

Jsem si myslel že na to jdu zbytečně složitě protože jsem si neuvědomil co přesně porovnávám tedy jsem ještě poupravil tvůj kód o kontrolu zda je {if $perm[$code] === 'TRUE'} a to je plně funkční tedy :

{block content}
{var $code = 3}

{if $perm[$code] === 'TRUE'}
<div class="well">
    <h1>Povedlo se</h1>
        <p>...</p>
</div>
{else}
<div class="well">
    <h1>Nepovedlo se</h1>
        <p>...</p>
</div>
{/if}

Moc díky za pomoc máš u mě pivko ;)

Editoval milda404 (25. 11. 2014 20:33)

Etch
Člen | 403
+
0
-

No jo no já předpokládal, že tam máš boolean…

milda404
Člen | 27
+
0
-

japlavaren napsal(a):

V presenteri (modely) by som pomocou array filter riešil, či sa to povedlo, alebo nie a to predával do šablony. Jedná sa o logiku a tá do šablony nepatrí.
(Predstav si šablonu ako ženu: tá by to tiež nepochopila… ;)

To je mi jasný že by to v šabloně nemělo být ale já můžu přiřadit $code až v šabloně. Bohužel