Webalize v generovani link

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

Chtel bych se zeptat proc mi toto nefunguje a popripade jak by se to dalo elegantne vyresit. Hlasi mi to chybu: error-no-route-for-front-news-default-typearticle-… Pokud pouziji bey webalize tak vse funguje spravne.

bootstrap.php

<?php
   $router[] = new NRoute('index.php', array(
        'module' => 'Front',
        'presenter' => 'Articles',
        'action' => 'default',
    ), NRoute::ONE_WAY);

    $router[] = new NRoute('<typeArticle>.html', array(
        'module' => 'Front',
        'presenter' => 'Articles',
        'action' => 'default',
        'typeArticle' => 'domaci-stranka',
    ));

    $router[] = new NRoute('<newsID>/<typeArticle>.html', array(
        'module' => 'Front',
        'presenter' => 'News',
        'action' => 'default',
    ));
?>

template

<?php
    {foreach $news as $new}
        <h5>{!$new->nadpis}</h5>
        <h6>{!$new->datum|date:'%d. %m. %Y'}</h6>
        {!$new->textShort}
        {if $new->textComplet != ''}<p><a href="{link :Front:News:, $new->nadpis|webalize, $new->id}">Více...</a></p>{/if}
    {/foreach}
?>
westrem
Člen | 398
+
0
-

V prvom rade len odporucenie, pouzi v definicii routy pre Id podmienku [0-9]+ aby to bralo len cisla, vyhnes sa par bezpecnostnym rizikam.

Dalej dalsia vec co som si vsimol, v definicii pre routu mas najskor Id az potom nazov clanku, v parametroch pre {link ..} to mas ale opacne.

V neposlednom rade som si isty, ze takto helpery asi nefunguju a musis napisat

{$new->nadpis|webalize}

tzn vysledok:

<?php
    {foreach $news as $new}
        <h5>{!$new->nadpis}</h5>
        <h6>{!$new->datum|date:'%d. %m. %Y'}</h6>
        {!$new->textShort}
        {if $new->textComplet != ''}<p><a href="{link :Front:News:, $new->id, {$new->nadpis|webalize}}">Více...</a></p>{/if}
    {/foreach}
?>

LatteFilter totiz inak nema ako vediet, ze chces ten nadpis webalizovat.

saimons
Člen | 293
+
0
-

Bohuzel toto nefunguje {$new->nadpis|webalize}, to poradi by nemelo vedit, mam to prohozene pak i v prezentru takze se to prenasi spravne. To omezeni pro cisla jsem zapomel, diky za upozorneni. Tak nevim jestli se to webalize muze vubec resit v template pri generovani url, mozna je to zapotrebu v prezentru? Ale pokud to dam mimo link {$new->nadpis|webalize} tak to bezproblemu funguje.

saimons
Člen | 293
+
0
-

Tak pokud jsem napsal toto tak to funguje:

<?php
{link :Front:News:, NString::webalize($new->nadpis), $new->id}
?>

Tak nevim teda proc nefunguje muje puvodni<

westrem
Člen | 398
+
0
-

Zaujimave, mal som za to, ze LatteFilter podoruje aj vnorene makra (este som sa vramci detailneho studia API k nemu nedostal), ocividne ale nie a preto treba volat funkciu priamo.

redhead
Člen | 1313
+
0
-

mám pocit, že použití helperů je specifické (zavisí na makru a kontextu) a fungují ne úplně všude