Diskuze: Použití podmínky v n:if

Člen

Zobrazeno 9 zpráv z 9.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Ahoj,
<td n:if="$colspan > 0">
osobně ale doporučuji řídící konstrukce (if, foreach) zapisovat jako makra a ne jako n:if atributy.
Děkuji, ale je divné, že se mi TD nezobrazí, ačkoliv je $colspan = 4. Proč je makro lepší než atribut?
Už to jede, chyba v operátoru, děkuji
To jsi podle mě spíše něco přehlédl nebo tak, což se běžně stává, ta konstrukce se mi jinak zdá v pořádku.
Důvod, proč mám raději if a foreach v makrech, je přehlednost. Dá se to trochu naprasit i stylem, že se dá těžko všimnout, že tam vůbec nějaká podmínka je, např.
<table>
<tr>
<th>ID</th>
<th>Jméno</th>
<th>Role</th>
<th>E-mail</th>
<th></th>
</tr>
<tr n:foreach="$users as $user">
<td style="width: 200px; height: 100px;" n:class="$user->isAdmin() ? admin, table-cell" id="cell_id">{$user->id}</td>
<td style="width: 200px; height: 100px;" n:class="$user->isAdmin() ? admin, table-cell" id="cell_name">{$user->getFullName()}</td>
<td style="width: 200px; height: 100px;" n:class="$user->isAdmin() ? admin, table-cell" n:if="$user->isAdmin()" id="cell_role">{$user->role}</td>
<td style="width: 200px; height: 100px;" n:class="$user->isAdmin() ? admin, table-cell" id="cell_email">{$user->email}</td>
<td style="width: 200px; height: 100px;" n:class="$user->isAdmin() ? admin, table-cell table-options" n:if="$user->canDelete() || $testMode" id="cell_editArea">
<a n:href="delete!">Smazat uživatele</a>
</td>
</tr>
</table>
Když bys takový kód dostal do ruky, nebo ho napsal sám a vrátil se k
němu třeba za půl roku, dokážeš se v tom hned vyznat a zjistit, že role a
poslední sloupec se vykresluje dle podmínky? A to nemluvím o tom, že někdy
ta struktura je složitější a vyžaduje to třeba dva cykly v sobě
Podle mě by ty řídící konstrukce měly být patrné hned na první pohled.
Když nechám HTML naprasené a alespoň z nich vyndám řídící konstrukce,
bude to dle mě daleko přehlednější a na první pohled vidím, jaký je tam
cyklus a jaké podmínky.
<table>
<tr>
<th>ID</th>
<th>Jméno</th>
<th>Role</th>
<th>E-mail</th>
<th></th>
</tr>
{foreach $users as $user}
<tr>
<td style="width: 200px; height: 100px;" n:class="$user->isAdmin() ? admin, table-cell" id="cell_id">
{$user->id}
</td>
<td style="width: 200px; height: 100px;" n:class="$user->isAdmin() ? admin, table-cell" id="cell_name">
{$user->getFullName()}
</td>
{if $user->isAdmin()}
<td style="width: 200px; height: 100px;" n:class="$user->isAdmin() ? admin, table-cell" id="cell_role">
{$user->role}
</td>
{/if}
<td style="width: 200px; height: 100px;" n:class="$user->isAdmin() ? admin, table-cell" id="cell_email">
{$user->email}
</td>
{if $user->canDelete() || $testMode}
<td style="width: 200px; height: 100px;" n:class="$user->isAdmin() ? admin, table-cell table-options" id="cell_editArea">
<a n:href="delete!">Smazat uživatele</a>
</td>
{/if}
</tr>
{/foreach}
</table>
Asi záleží na vkusu, já osobně měl vždy s n:if a n:foreach problém, když jsem potřeboval něco upravovat, protože jsem polovinu času zabil studiem, jak se vlastně to HTML nakonec vykreslí.
To je vec názoru a nemôžeš to tvrdiť generálne ... Nech si každý používa čo chce, koniec koncov v tomto prípade je to úplne jedno.
Právě proto jsem psal ten poslední odstavec. Jen takové doporučení, netvrdím, že je správně jen jedna možnost.
To je spíš o tom, že každé je hodné pro jinou situaci, často ti zase
n: makra zvýší čitelnost. A dávat si řídící makro jako n:if je hovězí
nápad, to by mělo být vždy první.
Třeba tohle je skvěle čitelné:
<div n:foreach="$flashes as $flash" n:class="alert, 'alert-' . $flash->type">
{$flash->message}
</div>
Já tomu rozumím, ale řekni to těm, kteří ty n: řídící makra píší
prasácky a pak zabíjíš půlku svého času studiem kódu Já to psal jen jako takové
osobní doporučení ze zkušenosti, ať každý píše, jak je to jemu / jeho
zaměstnavateli příjemné.
Zobrazeno 9 zpráv z 9.