Generování odkazu do proměnné

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

Zdravím, napadá vás jak vygenerovat plink v LATTE do proměnné(v komponentě)?

něco ve stylu:

{var $Link = plink Text:homepage}

Jen abych přiblížil proč – generuji menu a uživaztel má možnost vložit:

  1. odkaz na stránku z DB
  2. odkaz na presenter:action
  3. vlastní odkaz na co bude chtít

Takže tam vznikne „podmínkovací monstrum“, ale link potřebuji použít na 2 místech… takže bych musel duplikovat, což se mi nechce.

{var $hloubka = -1}
{ifset $seznam}
{foreach $seznam as $i}
    {if $hloubka < $i[level]}
    <ul class="level-{$i[level]-1}">
    {else}
        {for $var = $hloubka-$i[level]; $var > 0; $var--}
            </li></ul>
        {/for}
        </li>
    {/if}
    <li>
    <span></span>
    {if (!empty($i["parameter"]) && !empty($i[$i["column"]]))}
        <a href="{plink $i["link"] $i["parameter"]=>$i[$i["column"]]}" target="{$i->target}">{if $i->icon}<i class="{$i->icon}"></i>{/if}{$i->name}</a>
    {elseif $i["link"]}
        <a href="{plink $i["link"]}" target="{$i->target}">{if $i->icon}<i class="{$i->icon}"></i>{/if}{$i->name}</a>
    {else}
        <a href="{$i->url}" target="{$i->target}">{if $i->icon}<i class="{$i->icon}"></i>{/if}{$i->name}</a>
    {/if}
    {var $hloubka = $i->level}
{/foreach}
{for $var = $hloubka+1; $var > 0; $var--}
    </li>
    </ul>
{/for}
{/ifset}

Editoval exquis (29. 6. 2016 16:51)

CZechBoY
Člen | 3608
+
0
-

Tak můžeš z toho udělat znovu použitelnej blok, kterej includneš kde potřebuješ. Nebo z po vybrání z databáze uložit do entity přímo vygenerovaný odkaz a v šabloně ho jen vypíšeš do atributu href.

exquis
Člen | 82
+
0
-

CZechBoY napsal(a):

Tak můžeš z toho udělat znovu použitelnej blok, kterej includneš kde potřebuješ. Nebo z po vybrání z databáze uložit do entity přímo vygenerovaný odkaz a v šabloně ho jen vypíšeš do atributu href.

takže v podstatě neexistuje možnost jak bych jinak mohl přímo v latte přiřadit link do proměnné? Ale máš pravdu, že znovupoužitelný blok by šel taky. Díky moc

Barvoj
Člen | 60
+
0
-

Nebo trochu prasácky

{var $link = $control->presenter->lazyLink("Text:homepage")}
exquis
Člen | 82
+
0
-

Tak to funguje super, díky

{var $hloubka = -1}
{ifset $seznam}
{foreach $seznam as $i}
    {define link}
    {if (!empty($i["parameter"]) && !empty($i[$i["column"]]))}
        {plink $i["link"] $i["parameter"]=>$i[$i["column"]]}
    {elseif $i["link"]}
        {plink $i["link"]}
    {else}
        {$i->url}
    {/if}
    {/define}
    {if $hloubka < $i[level]}
    <ul class="level-{$i[level]-1}">
    {else}
        {for $var = $hloubka-$i[level]; $var > 0; $var--}
            </li></ul>
        {/for}
        </li>
    {/if}
    <li>
    <span></span>
    <a href="{include link}" target="{$i->target}">{if $i->icon}<i class="{$i->icon}"></i>{/if}{$i->name}</a>
    {var $hloubka = $i->level}
{/foreach}
{for $var = $hloubka+1; $var > 0; $var--}
    </li>
    </ul>
{/for}
{/ifset}
CZechBoY
Člen | 3608
+
0
-

Ten blok bych definoval někde výš a ne ve foreachi…

Jiří Nápravník
Člen | 710
+
0
-
{capture $link}{plink :App:Front:Homepage}{/capture}

if muzes mit jak v capture tak nad tim capture…