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

Člen

Zobrazeno 9 zpráv z 9.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |


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?
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.