Routování generuje adresy, které v zápětí přesměruje na jiný tvar
- neznamy_uzivatel
- Člen | 115
Ahoj,
mám čerstvě stažené aktuální nette, přidal jsem si prázdný
ProductPresenter, ve kterém je pouze
public function renderDefault($id) {
bdump($id);
}
K tomu jsem přidal druhý modul a v něm zase jeden prázdný presenter a
zkouším generování url.
Nevím proč, ale následující router vygeneruje při
{link Product:Default, id => 123}
do šablony adresu
localhost/product/default/123
Kterou ale ihned přesměruje na (zamýšlenou)
localhost/product/123
Co dělám špatně? :)
Je možné se nějak zbavit toho default aniž bych musel komplet všechny routy
napsat ručně?
Díky
public static function createRouter() {
$router = new RouteList;
$router[] = new Route('admin/<presenter>/<action>[/<id>]', [
'module' => 'Admin',
'presenter' => 'Dashboard',
'action' => 'default',
]);
$router[] = new Route('<presenter>/<action>[/<id>]', [
'presenter' => 'Homepage',
'action' => 'default',
]);
return $router;
}
Zkoušel jsem ty <action>
přidat volitelně
[/<action>]
, ale nic se nezměnilo. Zkoušel jsem i přidat
jako první routu přímo na product/<id>
, ale
taky nic…
Editoval neznamy_uzivatel (2. 2. 2019 9:44)
- neznamy_uzivatel
- Člen | 115
Takže vyřešeno, jde o první písmeno v action.
Kód:
{link Product:Default, id => '123'}
vygeneruje do šablony url localhost/product/default/123
, kterou
následně po kliknutí přesměruje
301 na localhost/product/123
Když upravím D
na d
, tzn.
{link Product:default, id => '123'}
vygeneruje se rovnou správná adrresa bez „default“.
Taková pitomost a potrápilo… :D
//EDIT:
Tak ještě jedno doplnění, samotné to ten problém neřeší, musí se dát
volitelně [/<action>]
Každopádně zajímavé chování, docela mě překvapilo, že se to takhle
chová běžně – dříve jsem myslel, že tam mám chybu, tak jsem to ani
moc neřešil a přepsal hodně rout od oka..
Editoval neznamy_uzivatel (2. 2. 2019 12:05)
- neznamy_uzivatel
- Člen | 115
CZechBoY napsal(a):
Hranaty zavorky udavaji ze parametr nemusi byt v url (pokud je hodnota stejna jako vychozi).
jj, já vím, používám to. V prvním případě to ale nefunguje kvůli
toho D
d
, protože Default
není
výchozí akce, ta je default
.. Proto nezabraly ty hranaté
závorky a udělalo mi to v hlavě rozvařený korán… :)