Dynamické generování tagu

před 7 měsíci

Alsatian
Člen | 140
+
0
-

Ahoj.

V latte bych rád generoval tag A nebo DIV dle podmínky.

Napadlo mě něco takového:

<{isset($neco) ? 'a' : 'div'} n:class="moje-trida, dalsi-trida" n:href="myHandle!">

Při takovém generování tagu A nebo DIV je nefunkční n:class a taky n:href.

Jak byste takovou situaci řešili vy, prosím?

Mám udělat dva tagy (nutné zopakovat n:class a n:href pro každý tag a ptát se podmínkou n:tag-if?

Třeba:

<a n:tag-if="$neco" n:class="..." n:href="...">
<div n:tag-if="!$neco" n:class="..." n:href="...">
    ...
</div>
</a>

před 7 měsíci

CZechBoY
Člen | 3386
+
0
-

A je opravdu potřeba měnit tag? Tohle jsem nikdy neřešil tak by mě celkem zajímal use case.
Jinak samozřejmě celý obalit do podmínky by mělo fungovat

{if $neco}
<a n:class="..." n:href="...">
</a>
{else}
<div n:class="..." n:href="...">
    ...
</div>
{/if}

před 7 měsíci

Alsatian
Člen | 140
+
0
-

@CZechBoY – generuji způsoby platby v eshopu. Ty, které nejsou dostupné nebudou mít tag A, ale jenom DIV + zobrazí se pomocí CSS jako poloprůhledné a nepůjde na ně kliknout (vybrat).
Tvé řešení je taky samozřejmě funkční, ale uvnitř tagu je další kód a ten bych byl nucen duplikovat. Mě zajímalo, jestli se to dá nějak vyřešit. Já použil cestu nejmenšího odporu, jak jsem psal výše a to dvou tagů pod sebou s podmínkou tag-if.

před 7 měsíci

h4kuna
Backer | 706
+
0
-

Já bych si ten a element nastyloval a taky na něj nemusí jít kliknout. Nehledě na to že div je blokový element a a je inline.

Nebo jinak udělej kombinaci a span a ten a element opodmínkuj.

<a n:tag-if="$neco"><span>text</span></a>

před 7 měsíci

Alsatian
Člen | 140
+
0
-

Díky moc chlapi. Pokud to nejde přes

<{isset($neco) ? 'a' : 'div'} n:class="moje-trida, dalsi-trida" n:href="myHandle!">

tak to dál neřeším. Napsat to jinak nedalo práci. Myslel jsem, že to jenom chybně zapisuji.

před 7 měsíci

CZechBoY
Člen | 3386
+
0
-

Tak si hod vnitrek do funkce.

před 7 měsíci

Alsatian
Člen | 140
+
0
-

@CZechBoY jak to myslíš hodit do funkce, prosím tě?