Router, nelze zavolat action v latte
- popcorn
- Člen | 28
Ahoj, podle dokumentace bych měl být schopný zavolat nějakou akci v latte šabloně, jenže když se pokusím o
<a n:href="Settings:LeaveTeam">Opustit tým</a>
Tak mě to přesměruje na …settings/leave-team a neprovede action. Hádám, že bude chyba v nastavení routeru, ale kde?
RouterFactory:
class RouterFactory
{
use StaticClass;
/**
* Vytváří a vrací seznam routovacích pravidel pro aplikaci.
* @return IRouter výsledný router pro aplikaci
*/
public static function createRouter(): RouteList
{
$router = new RouteList;
$router[] = new Route('<presenter>/<action>', '<presenter>:default');
$router[] = new Route('signIn', 'SignIn:default');
$router[] = new Route('signUp', 'SignUp:default');
$router[] = new Route('Settings', 'Settings:default');
$router[] = new Route('Home', 'Home:default');
return $router;
}
}
- Mysteria
- Člen | 797
Routa
$router[] = new Route('<presenter>/<action>', '<presenter>:default');
by měla být jako poslední, protože se jede dle pořadí. Může se ti stát,
že ti tahle matchne nějakou specifikou, kterou uvedeš později.
A k tomu problému, zkusil bych malé L v názvu akce:
<a n:href="Settings:leaveTeam">Opustit tým</a>
, to ti
zavolá metodu actionLeaveTeam případně renderLeaveTeam v Settings
presenteru.
- MajklNajt
- Člen | 502
netestoval som to, ale zápis druhého argumentu sa mi zdá divný:
$router[] = new Route('<presenter>/<action>', '<presenter>:default');
nemal by byť východzí presenter zadefinovaný takto?
$router[] = new Route('<presenter>/<action>', 'Page:default');
a samozrejme malé písmeno na začiatku názvu akcie ako píše Mysteria
- popcorn
- Člen | 28
Protože mě to přesměruje sem: http://prntscr.com/oxdnmq a nevykoná to tu query, která je v manageru.
Editoval popcorn (25. 8. 2019 22:10)
- Gavrilo
- Člen | 46
popcorn napsal(a):
Protože mě to přesměruje sem: http://prntscr.com/oxdnmq a nevykoná to tu query, která je v manageru.
Potrebuješ to nastaviť ako ajaxovu akciu prípadne jej nastaviť redirect.
Skús tam použiť toto:
public function actionLeaveTeam(): void
{
$this->teamManager->leaveTeam();
$this->redirect('Page:Default');
}
Query sa určite vykoná akurát nedokáže nájsť .latte kam ťa po tej akcii má presmerovať.
Editoval Gavrilo (25. 8. 2019 22:16)
- popcorn
- Člen | 28
Gavrilo napsal(a):
popcorn napsal(a):
Protože mě to přesměruje sem: http://prntscr.com/oxdnmq a nevykoná to tu query, která je v manageru.
Potrebuješ to nastaviť ako ajaxovu akciu prípadne jej nastaviť redirect.
Skús tam použiť toto:
public function actionLeaveTeam(): void { $this->teamManager->leaveTeam(); $this->redirect('Page:Default'); }
Query sa určite vykoná akurát nedokáže nájsť .latte kam ťa po tej akcii má presmerovať.
Nojo, máš pravdu… Já jsem ale vůl :-D
Díky moc všem! ;)