Jak na helper unvitř n:href?
- Peetee
- Člen | 75
Nemyslím, si že je dobrý nápad jako jediný parametr posílat
$item->name|webalize
, protože nemáš zajištěno, že se
z více položek nebude generovat stejné URL. Zaměřil bych se na to, abych
webalize nemusel použít.
Možné řešení: předpokládám, že $item taháš z DB – přidal bych
do tabulky sloupec a už při ukládání(vytváření/editaci) bych z
name
udělal přes webalize url-name
. Pokud nad
sloupcem uděláš unique index, máš jistotu, že pro jedno URL může být
jen jeden výsledek…
Editoval Peetee (21. 11. 2011 12:11)
- Filip Procházka
- Moderator | 4668
Latte je dělané tak, že ty modifikátory na konci platí pro celý výraz.
<a n:href="Presenter:action $item->name|webalize">..</a>
Můžeš si to představit, jako kdyby jsi napsal
<a n:href="webalize(Presenter:action $item->name)">..</a>
Což je blbost, že? :)
Řešením je udělat si například další vlastnost toho objektu, kde budeš mít svou url připravenou. Nebo ještě lépe, předáš si tam jenom IDčko a dořešíš pomocí filtrů.
<a n:href="Presenter:action $item->id">..</a>
- jf71
- Člen | 11
Peetee napsal(a):
Nemyslím, si že je dobrý nápad jako jediný parametr posílat
$item->name|webalize
, protože nemáš zajištěno, že se z více položek nebude generovat stejné URL. Zaměřil bych se na to, abych webalize nemusel použít.Možné řešení: předpokládám, že $item taháš z DB – přidal bych do tabulky sloupec a už při ukládání(vytváření/editaci) bych z
name
udělal přes webalizeurl-name
. Pokud nad sloupcem uděláš unique index, máš jistotu, že pro jedno URL může být jen jeden výsledek…
Naprosto chápu a souhlasím. Já jsem to pro příklad zjednodušil.
Samozřejmě v URL je unikátní ID, podle kterého identifikuju záznam v DB.
Jen chci do URL přidat název, kvůli dobrému pocitu a Google. A řikal jsem
si, že když tady máme krásné webalize
, tak ho využiju a
nebude to stát nic. Dělat kvůli tomu další sloupec v databázi je něco,
čemu jsem se chtěl vyhnout.
- jf71
- Člen | 11
HosipLan napsal(a):
Řešením je udělat si například další vlastnost toho objektu, kde budeš mít svou url připravenou. Nebo ještě lépe, předáš si tam jenom IDčko a dořešíš pomocí filtrů.<a n:href="Presenter:action $item->id">..</a>
To je na mě zatim trochu těžká písemka. Jak jsem psal, tu webalized
hodnotu jsem do URL chtěl přidávat pouze pro přehlednost, ne jako parametr.
Odkaz by vypadal example.com/item/12345/item-name
s tim že
item-name by bylo pro aplikaci irelevantní.
Spíš mě překvapilo, že v Latte nefunguje
{var $foo = $bar|webalize}
Každopádně díky za ochotu a odpovědi.
- petr.pavel
- Člen | 535
jf71 napsal(a):
Spíš mě překvapilo, že v Latte nefunguje{var $foo = $bar|webalize}
To mě taky udivilo. Aspoň, že funguje
{var $foo = NStrings::webalize($bar)}