Jak udělat webalize parametru v n:href?

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

Ahoj, mám odkazy, ve kterých je aji název stránky, není to přes filtr v routeru, ale odkaz jednoduše odkazuje na <id> a zároveň na <name>, z presenteru se mi odkazuje jednoduše, ale z šablony mi to nějak nejde.

<a n:href="view $p->id, name => $p->name|webalize"></a> <!-- undefinded constant -->
<a n:href="view $p->id, name => {$p->name|webalize}"></a> <!-- syntax error, unexpected '{' -->

{var $webName = $p->name|webalize} <!-- $webName má stejnou hodnotu jako $p->name -->

Data jsou čtena přímo z databáze, dá se udělat to webalize nějak aniž bych musel ty data načítat v modelu a převádět?

Nette database, nette 2.1 dev, php 5.4.19

Tomáš Votruba
Moderator | 1114
+
0
-

Ahoj, doporučil bych ti spíš vlastní routu a používat pouze id.
Pokud potřebuješ hotfix, tak:

$template->webalize($p->name)

Editoval Schmutzka (26. 9. 2013 23:23)

David Matějka
Moderator | 6445
+
0
-

bohuzel nejde aplikovat helpery na cast makra. nejjednudussi reseni je tohle:

<a n:href="view $p->id, name => $template->webalize($p->name)"></a>

EDIT: pozde :(

Editoval matej21 (26. 9. 2013 23:25)

duke
Člen | 650
+
0
-

Myiyk napsal:

{var $webName = $p->name|webalize} <!-- $webName má stejnou hodnotu jako $p->name -->

Mělo by fungovat:

{capture $webName}{$p->name|webalize}{/capture}

Ale spíš na to jdi přes speciální routu, jak ti doporučil už Schmutzka.

Myiyk
Člen | 321
+
0
-

Díky, funguje to

Myiyk
Člen | 321
+
0
-

Přes vlastní routu, když se bude používat pouze ID, tak to ale bude pro každou adresu dělat jeden select ne ?

duke
Člen | 650
+
0
-

Ne nezbytně. Záleží, jak máš vyřešený model. Ta routa nemusí přistupovat k databázi přímo, ale např. skrz modelové služby, které používáš i jinde (v tvém případě např. při získávání $p), takže pak nemusí být nutné opětovně načítat to, co již bylo načteno dříve. Také můžeš využít cachování.

Myiyk
Člen | 321
+
0
-

Lze nějak do Nette Database nastavit cache na data? Nebo si to musím udělat sám?

David Matějka
Moderator | 6445
+
0
-

ne, musis si to napsat sam