Předání objektu metodě link
- spidy
- Člen | 55
Ahoj, zajímala by mě jedna věc ohledně routování.
Dejme tomu že mám jednoduché CMS s články a na hlavní stránce mám
10 nejnovějších článků. Byl jsem zvyklý psát v šabloně něco
takového:
<a n:foreach="$articles as $article" n:href="Article:view $article->id">{$article->title}</a>
Je to sice použitelné, ale co když chci mít v adrese místo id článku jeho jméno? Nette by mělo být na adresách nezávislé, je tedy nejspíš blbost začít předávat $article->title místo $article->id. Nejlepší by asi bylo předávat celý objekt $article, ale na to mi Nette hlásí, že objekt nemohl být převeden na řetězec. Abych si v routeru selectoval článek z databáze kvůli zjištění jeho jména, když už ho přitom mám jednou selectnutý mi nepřijde moc hezké. Měl bych tedy objekt serializovat? To mi také nepřijde úplně nejlepší… Mohl by mi nějaký profík ukázat kousek kódu, jak to řeší on? :)
Předem díky za odpovědi
- _Martin_
- Generous Backer | 679
Nette by mělo být nezávislé na podobách adres, nicméně to, co ty
řešíš, není podoba adresy. Adresy slouží jenom jako způsob, jak volat
nějakou metodu s nějakými parametry. A ty jsi se v tuto chvíli rozhodl
volat metodu view
s parametrem title
(či spíš
url
) namísto id
.
Nicméně, mě by se také líbilo mít možnost předávat jako parametr
rovnou objekt – a nejlépe ten samý objekt rovnou dostávat jako parametr
metody view
. To si ovšem žádá změny v Nette – možná
přepsání metod pro generování odkazů, určitě přepsání routeru (resp.
napsání vlastního).
- Filip Procházka
- Moderator | 4668
V routeru je na to podmínka, objekty to odmítá. Jedině udělat vlastní router, nebo předávat ID.