Ako spraviť aby zostalo ID v URL

MKI-Miro
Člen | 261
+
0
-

Ahojte

Ako dosiahnut to ked sa zavola

.com/presenter/action?id=1

aby sa nezmenilo na

.com/presenter/action/1

Ďakujem

Ondřej Kubíček
Člen | 494
+
0
-

máš tak definovanou routu, tak si to uprav na něco takového:

$route = new Route('<presenter>/<action>[?id=<id>]', 'Homepage:default');
MKI-Miro
Člen | 261
+
0
-

dakujem a ak by som to chcel len pre jeden konkretny presenter action tak

$route = new Route('mojPresenter/mojaAkcia[?id=<id>]', 'mojPresenter:mojaAkcia');

??

CZechBoY
Člen | 3608
+
0
-

jo, ale musíš dát tu konkrétní routu nad všema obecnýma

MKI-Miro
Člen | 261
+
0
-

dostavam ale

Unexpected '[' in mask 'checkout/error[?id=<id>]'
Kamil Valenta
Člen | 758
+
+1
-

Query parametry ani nejsou součástí rout, nech si pouze <presenter>/<action>

Ondřej Kubíček
Člen | 494
+
0
-

query parametr zapsat jde, aspon to píše dokumentace:

// říkáme, že GET parameter "cat" chceme v aplikaci použít pod názvem "categoryId"
$route = new Route('<presenter>/<action> ? id=<productId> & cat=<categoryId>', ...);

tak to jen nedávej jako volitený parametr, ty to tam stejně potřebuješ vždy ne?

tohle ti bude fungovat?

$route = new Route('mojPresenter/mojaAkcia?id=<id>', 'mojPresenter:mojaAkcia');
jiri.pudil
Nette Blogger | 1028
+
0
-

Ale jde a jsou, tedy aspoň dle dokumentace. Jen asi nemůžou být nepovinné (v [])?

Masky mohou také obsahovat tradiční GET parametry (parametry za otazníkem v URL). Pro tyto však nelze použít validační (např. regulární výraz) a další složitější struktury, nicméně můžeme určit, který parametr bude použit pod jakým názvem v aplikaci:

// říkáme, že GET parameter "cat" chceme v aplikaci použít pod názvem "categoryId"
$route = new Route('<presenter>/<action> ? id=<productId> & cat=<categoryId>', ...);
Šaman
Člen | 2634
+
0
-

id i cat jsou (afaik) pouze ukázky, které se v routeru zpracují přímo do formátu adresy. Když v routě nebudou žádné parametry, tak by se cokoliv mělo předávat ve formátu ?param=value&param1=…

MajklNajt
Člen | 471
+
0
-


ja si myslím, že by mu normálne mala fungovať táto routa:

$route = new Route('mojPresenter/mojaAkcia[/<id>]', 'mojPresenter:mojaAkcia');


pričom keď niekto použije adresu http://host.tld/…er/mojaAkcia?id=1, tak ho to presmeruje vďaka canonicalize na http://host.tld/…/mojaAkcia/1 – a v tomto formáte mu to bude aj generovať linky – alebo sa mýlim?

EDIT: sorry, zle som si prečítal problém, chce NEpresmerovať

Editoval MajklNajt (16. 10. 2019 16:49)

Šaman
Člen | 2634
+
+1
-

A tohle nefunguje? (Dát to samozřejmě před obecnou routu.)

<?php
$route = new Route('moj/moja', 'Moj:moja');
?>