dokážu nějak v presenteru zjistit jaká šablona se volá?
- Marek Bartoš
- Nette Blogger | 1280
Nejsprávněji $this->getView()
$this->view
a $this->action
jsou deprecated
$this->getAction()
sice většinou vrací totéž, co view, ale
view jde nastavit i na jinou hodnotu, než název aktuální akce
- Laddy
- Člen | 12
@Marek Bartoš
Ještě lépe… pánové, respekt… vždyť je to skoro helpline online :)
Když jsem řešli support na placenou verzi Adobe Lightroom bylo to řádově
pomaleší :)
Marek Bartoš napsal(a):
Nejsprávněji
$this->getView()
$this->view
a$this->action
jsou deprecated
$this->getAction()
sice většinou vrací totéž, co view, ale view jde nastavit i na jinou hodnotu, než název aktuální akce
- Kamil Valenta
- Člen | 822
Ne, protože ve startup() žádná šablona zavolána
nebyla.
$this->action Ti vrátí actionu, která se dle routy bude
volat. A dost možná to bude odpovídat i render metodě, která se zavolá a
šabloně, která se vykreslí.
Ale jisté to není, v actioně se to může forwardnout nebo se vykreslení
přesune jinam pomocí $this->setView(…);
- Laddy
- Člen | 12
@KamilValenta Díky :)
Kamil Valenta napsal(a):
Ne, protože ve startup() žádná šablona zavolána nebyla.
$this->action Ti vrátí actionu, která se dle routy bude volat. A dost možná to bude odpovídat i render metodě, která se zavolá a šabloně, která se vykreslí.
Ale jisté to není, v actioně se to může forwardnout nebo se vykreslení přesune jinam pomocí $this->setView(…);
- Marek Bartoš
- Nette Blogger | 1280
Pročítám to ještě jednou a sice se ptáš na šablonu, ale vlastně
chceš vědět na jaké jsi akci :)
Takže getAction()
by nejspíš bylo přesnější.
Případně existuje ještě $this->isLinkCurrent()
, pokud
chceš rozlišit víc než jen akci https://doc.nette.org/…eating-links#…
Ale většinou je vhodnější kód pro určité akce psát do action metod. Pro
akci end by to byla public function actionEnd()
- Laddy
- Člen | 12
@Marek Bartoš
Díky…
Mimochodem, když tě mám takhle online :) Můžu ještě jeden dotaz
…
nelíbí se mi název šablony default.latte, ale pokdud ve složce žádné
default.latte není, tak pokud někdo odmaže kus cesty vyhodí to chybu…
není možné někde nastavit, že xyz.latte má být pro daný presenter
považováno za default?
Díky
Marek Bartoš napsal(a):
>
Pročítám to ještě jednou a sice se ptáš na šablonu, ale vlastně chceš vědět na jaké jsi akci :)
TakžegetAction()
by nejspíš bylo přesnější.
Případně existuje ještě$this->isLinkCurrent()
, pokud chceš rozlišit víc než jen akci https://doc.nette.org/…eating-links#…
Ale většinou je vhodnější kód pro určité akce psát do action metod. Pro akci end by to bylapublic function actionEnd()
- Marek Bartoš
- Nette Blogger | 1280
To že ti to vyhodí chybu je správně, dělá to jen v debug módu. Když nebude existovat action/render metoda ani šablona, tak se z ní v produkci stane 404.
Jinak nic ti nebrání <presenter> a <action> v routách vůbec nepoužívat, můžeš si pro každou akci napsat extra routu a určit, na jakou akci vede.
Ale doporučil bych ti dělat presentery jen s jednou akcí (default), je to tak přehlednější.
Editoval Marek Bartoš (4. 4. 2022 20:37)