Routování generuje adresy, které v zápětí přesměruje na jiný tvar

před 4 měsíci

neznamy_uzivatel
Člen | 74
+
0
-

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. 9:44)

před 4 měsíci

neznamy_uzivatel
Člen | 74
+
0
-

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. 12:05)

před 4 měsíci

CZechBoY
Člen | 3351
+
0
-

Hranaty zavorky udavaji ze parametr nemusi byt v url (pokud je hodnota stejna jako vychozi).

před 4 měsíci

neznamy_uzivatel
Člen | 74
+
0
-

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… :)