Jak zjistit Modul, Presenter, Action a parametry z route
- Jod
- Člen | 701
Aha:
// Vracia modul:presenter
$this->getName(); //alebo ->name
// Vracia action napr default
$this->getAction(); // alebo ->action
// Vracia view napr default
$this->getView(); // alebo ->view
// vracia url parametre
$this->getParams(); // alebo params
// vracia jeden parameter podla klúča id
$this->getParam('id');
- Wosonj
- Člen | 36
Špatně jsem to popsal – nepotřebuji to pro aktuální presenter, ale
obecně.
Například z Admin:Tables:Show customers
potřebuji získat, že
zpracovávat to bude třída Admin_TablesPresenter, akce je ‚Show‘ a
parametr ‚customers‘.
Zpracovává to Presenter::createRequest()
jenže ta vrací už
rovnou URL. Zpětně to z URL taky jednoduše získat nejde, protože to zase
zpracovává IRouter::match()
, který bere IHttpRequest, což je
implementováno v HttpRequest tak, že bere aktuální URI…
- LM
- Člen | 206
Presenter::createRequest()
sice vrátí rovnou odkaz, ale
odloží si vytvořený PresenterRequest
do
Presenter::$lastCreatedRequest
takže:
$this->createRequest('Admin:Tables:Show'); // $this je presenter
$this->getLastCreatedRequest(); // vratí PresenterRequest kde je to co potřebuješ: presenter, action ...
Třídu z názvu presenteru ti odvodí PresenterLoader
.
- Wosonj
- Člen | 36
LM napsal(a):
Presenter::createRequest()
sice vrátí rovnou odkaz, ale odloží si vytvořenýPresenterRequest
doPresenter::$lastCreatedRequest
takže:$this->createRequest('Admin:Tables:Show'); // $this je presenter $this->getLastCreatedRequest(); // vratí PresenterRequest kde je to co potřebuješ: presenter, action ...
Třídu z názvu presenteru ti odvodí
PresenterLoader
.
Super, funguje to, jenom se musí použít
$this->link('Admin:Tables:Show');
, protože
Presenter::createRequest() je protected.
Potřebuji to jinak kvůli breadcrumbs – chci to dělat tak, že každá
Action, která potřebuje použít bradcrumbs, zavolá metodu s cestou třeba
array('Default:Default','Category:Default 18','Article:Detail 5',)
,
která pak pro každou cestu zjistí správný presenter a zavolá v něm
nějakou statickou metodu, která vrátí správný název stránky – takže
výsledkem bude třeba Homepage → Hardware → Monitor XYZ