Jak sladit parametry query string s routováním
- mildabre
- Člen | 62
Prosím o odbornou radu pokročilejší znalce Nette.
V PHP jsem byl zvyklý pracovat s parametry pro řízení aplikace (např. nastavení filtru řazení výpisu, volba výstupní šablony výpisu, stránkování apod) pomocí parametrů ve tvaru:
/nejaka-adresa?id=value1&order=value2&filter=value3
Když mám routy nastavené podle základního tutoriálu Quickstart:
<?php
$container->router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
$container->router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
?>
tak mohu pracovat s id jako primárním klíčem aktuální tabulky.
Jak ale dostanu do url další parametry – chtěl bych je mít v query stringu (za otazníkem). Je potřeba pro toto nějak nastavovat routu a jak se to zapisuje do makra latte n:href ? Je toto vůbec možné ?
Díky předem za jakoukoliv kvalifikovanou radu jak na to. Hledám už několik hodin na fóru i v dokumentaci a nemohu najít tu správnou inspiraci.
- vvoody
- Člen | 910
https://doc.nette.org/…n/presenters#… ostatné parametre tam vložíš úplne tak isto, ale samozrejme že už to musí byť vždy key value dvojica. Router tam parametre doplní automaticky za otáznik ak sa v maske nenachádzajú.
- mildabre
- Člen | 62
Díky za radu !
Máš plnou pravdu, Nette Framework je chytrý a pracovitý a parametry, které nejsou v masce Routeru umístí automaticky za otazník, což je přesně to co potřebuji. V tutoriálu tohle není jasně popsáno. Zkusil jsem dokonce jeden parametr který není v masce deklarovat jako persistentní:
<?php
abstract class BasePresenter extends Nette\Application\UI\Presenter
{
/** @persistent */
public $klient_id;
}
?>
a super – ve všech odkazech v šablonách generovaných presentery poděděnými z BasePresenter-u Nette Framework automaticky přidá za otazník ten persistentní parametr ?klient_id = XXX. Tím nám tento framework ušetří spoustu práce s úmorným datlováním parametrů v odkazech.