Symbol „Otazník“ v definici routy
- knyttl
- Člen | 196
Ahoj,
snažím se mít routy definovatelné z administrace a to co nejvíce variabilně (přání zákazníka). Vše by bylo fajn – můžu krásně zapisovat routy, které se pak přeloží do výrazu pro nette routy, např.:
/clanky/<kategorie>/<clanek_id>
Problém ale je, když zákazník chce mít např.
/clanky/index.php?cat_id=<kategorie>
- Nette url parsuje pouze po otazník. Jde tahle funkcionalita nějak pozměnit?
- Pavel Kouřil
- Člen | 128
Věci za otazníkem parsuje Nette jako query parametry (přístupné přes
$presenter->getParam('nazev')
) … tzn. by šlo mít routu
např. /<presenter>/index.php a přistupovat v presenteru k parametrům
přes zmíněné getParam … nebo možná i předávat $cat_id jako argument
metodě action/render.
- Pavel Kouřil
- Člen | 128
Právěže nemusíš? Zkus udělat odkaz na
Admin:Category:edit, cat_id => $category->id
, např. …
funkčnost by to ovlivnit nijak nemělo (teda doufám :)), jen to bude vypadat
hnusně.
- knyttl
- Člen | 196
No, tak to bohužel udělat nemůžu – ten zákazník tam má prostě input ve formuláři a do něja zadává formu toho url, přesně takhle:
/clanky/index.php?cat_id=<kategorie>
nebo
/clanky/<kategorie>/<clanek_id>
a to pak s nějakými drobnými úpravami předávám jakože
<?php
$url = '/clanky/index.php?cat_id=<kategorie>';
...
$route[] = $route = new Route($url, array(...));
?>
- Pavel Kouřil
- Člen | 128
Routy:
$router[] = new Route('/clanky/index.php', array(...));
$router[] = new Route('/clanky/<kategorieId>/<clanekId>', array(...));
A při zpracování formuláře to poslat jako
$presenter->redirect('Module:Presenter:action', array('cat_id' => $categoryId));` ?
V presenteru to pak odchytneš jako např.
class AbcPresenter extends Presenter
{
public function renderDefault($cat_id) { ... }
}
…
Nebo se akorát nechápeme, čeho přesně chceš docílit? Nebo nějaká část aplikace na Nette neběží? Každopádně tak jako tak ten query parametr součást routy být nemusí.
- knyttl
- Člen | 196
Zákazník má adminsitraci, kde si může pro různé části veřejné částě definovat různá URL. A to dělá tím, že je vyplňuje prostě ve formuláři v nějakém tvaru. Jde o to, že mu potřebuju dovolit, aby tam mohl napsat i otazníky.
To, co popisuješ mi není neznámé, ale neumožňuje mi to tu flexibilitu.
Editoval knyttl (25. 10. 2011 21:03)
- Etch
- Člen | 403
djdaca napsal(a):
Zdravím,
Já mam trochu jiný problém, máme stránku kde detail se nachází na „domena.cz?12345“ – chtěl bych aby detail byl v Detail:default ale zároveň aby fungovala homepage na Homepage:default
Neví prosím někdo jak ?
Děkuji za odpověď
Udělat si pro Homepage vlastní „speciální“ routu?