Jeden z presenterů nezobrazí flashMessage
- argosovo
- Člen | 54
Ahoj,
na jednom z presenterů se mi po redirectu nezobrazí flashMessage, jakmile
redirectnu jinam (na jiný presenter), vše se zobrazuje správně.
Jsem si téměř jistý, že to ovliňuje daný presenter, který je však
největší v celé aplikaci. Nemá někdo myšlenku která metoda by mohla
ovlivňovat následné vykreslení message (všechny mé presentery dědí
z BasePresenteru, kde přepisuji třeba startup, nicméně žádnému dalšímu
presenteru to nevadí – dále v tomto presenteru už mám snad jenom
několik metod render<Action> a pár createComponent<Component> ).
Nebo by to mohlo být tím že v tomto presenteru si vytahuji nějaká data ze
session? Vůbec nevím kde začít debbugovat, přece jen se považuji spíš za
začátečníka v nette. Tedy hledám něco jako „životní cyklus
flashMessage“?
Děkuji za nápady
Editoval argosovo (25. 11. 2015 22:39)
- Šaman
- Člen | 2666
Session by to být mohlo jen pokud někde kompletně celé session
resetuješ, nebo promažeš cookies. Flashmessages se v session
přenáší.
Pak by to mohla být přepsaná metoda flashMessage()
(ta se dědí
z Control
), hasFlashSession( )
, nebo
getFlashSession( )
.
Taky by to mohlo být zahození _fid
v URL, protože podle něho
se ta flashmessage v session hledá.
Ale nejčastěji to bývá problém šablony, která prostě FM nevykresluje.
Zkontroluj si nejprve jestli ti ta FM dojde do šablony (dumpni si proměnnou
$flashes
).
- argosovo
- Člen | 54
Tak a mám tu vítěze problému:
v injectUsersModels() nesmíte ukládat do template (injectnul
jsem cache a hned z ní vytáhl hodnoty do template, protože „když už tam
byla ta cache“). Vše fungovalo bez problému až na výše zmíněné
flashMessage, kterých jsem si však všimnul s notným spožděním a nyní mi
to zabralo několik hodin hledání, jelikož jsem nevěděl která část
scriptu způsobuje problém.
Tak třeba to jednou někomu pomůže.
- argosovo
- Člen | 54
Šaman: děkuji za zájem a pomoc… moje začátečnické „debugování“ spočívalo nakonec ve:
- Vytvoření render v daném presenteru který nedělá nic jiného než nastaví flashMessage a redirectne
- Vytvoření render ve stejném presenteru, který nedělá nic jen je na něj redirectnuto a má zobrazit flashMessage:
<?php
public function renderFlash(){
$this->flashMessage("flash");
$this->redirect("PresenterSChybou:zobrazit");
}
public function renderZobrazit(){
$this->setView("default");
}
?>
3. Když jsem si ověřil, že i při prázdné render se flashMessage
nezobrazí, prošel jsem celý presenter a hledal metody které by mohly
ovlivňovat prázdný render… byly tam asi dvě z toho jedna
injectUsersModels()
4. zakomentovával jsem různé části kódu v injectUsersModels() až se
konečně zobrazila flash message… → viz. předchozí příspěvek :)
Ale opravdu děkuji za snahu, na forum jsem psal po několika hodinách snažení, ale paradoxně mi to pomohlo utřídit myšlenky a sám přijít na problém :)
- Šaman
- Člen | 2666
Jo, to se mi taky stává, že se snažím popsat problém a během psaní se mi to ujasní natolik, že problém vyřeším :)
Ale docela by mě zajímalo, cos měl v té metodě
injectUsersModels()
. Obecně by se ale v inject metodách nic moc
dělat nemělo, jsou to vlastně jen opožděné konstruktory určené
k nastavení závislostí.