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ýPresenterRequestdoPresenter::$lastCreatedRequesttakž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