Routa generuje latte default, přitom výchozí je jiná latte

Alsatian
Člen | 164
+
0
-

Taková hloupost, ale třeba budete vědět.

Potřebuji použít následující routu:

$router[] = new Route('sign[/<action>]', 'Sign:in');

(Používám ji proto, že dále filtruji stránky adminu „admin-<presenter>/<action>“ a následně stránky webu jako ‚<node>‘, ‚Page:pages‘. Lepší by bylo použít moduly Front a Admin, ale zatím jsem moduly nerozchodil korektně.)

Výchozí šablona není default, ale „in“.
Pokud nechám vytvořit odkaz <a n:href=„Sign:“>Zpět na přihlašovací stránku</a> – v url se mi generuje Sign/default místo očekávaného „Sign“ bez lomítka a textu default s odkazem na action „in“.

Vyřešil jsem to prozatím filtrem, ale nevím, jestli je to chybka nebo na to jdu špatně.

$router[] = new Route('sign[/<action>]', [
    'presenter' => 'Sign',
    'action' => 'in',
    null => [
        Route::FILTER_IN => function (array $params) {
            return $params;
        },
        Route::FILTER_OUT => function (array $params) {
            if($params['action'] == 'default') unset($params['action']);
            return $params;
        },
    ]
]);

Editoval Alsatian (10. 10. 2018 0:31)

CZechBoY
Člen | 3608
+
0
-

Na co je ten unset akce? Nedela problemy nahodou toto?

Alsatian
Člen | 164
+
0
-

@CZechBoY nene, tím jsem právě vyřešil ono problematické dosazování ‚default‘.

Tento řádek nefunguje jak má :)

$router[] = new Route('sign[/<action>]', 'Sign:in');
duke
Člen | 650
+
+2
-

Alsatian napsal:

Výchozí šablona není default, ale „in“.
Pokud nechám vytvořit odkaz <a n:href="Sign:">Zpět na přihlašovací stránku</a> – v url se mi generuje „Sign/default“ místo očekávaného „Sign“ bez lomítka a textu default s odkazem na action „in“.

Pokud se nemýlím, zápis Sign: v n:href je jen zkratkou pro zápis Sign:default bez ohledu na to, jaké máš routování. Nemůžeš tam mít prostě <a n:href="Sign:in">Zpět na přihlašovací stránku</a>? Jaké to vygeneruje url (zda bez uvedené action či s) už pak závisí na těch routách.