Jeden konkrétní presenter neposílá flash message; nefunkční flash message
- TonnyVlcek
- Člen | 31
Ahoj,
v @layout.latte standardně vypisuju flash zprávy (daný blok je tam
vložený: {include listFlashMessages}
).
Normálně se flash messages posílají a vypisují v pořádku, ale mám
jeden presenter který, ve kterém když pošlu flash message a redirectnu
kamkoli jinam (mimo $this->redirect('this')
) tak se flash
message jakoby ztratí. Cílová url obsahuje _fid
parametr. Ale
když dumpnu $this->template->flashes
tak dostanu
prázdné pole.
Ještě přidám, že jiný presenter, který má stejného „rodiče“
podobným problémem netrpí.
Pokud pošlu flash a redirectnu sám na sebe
$this->redirect('this')
zpráva se správně zobrazí.
Teď jsem taky přišel na to, že stejný problém je s používáním
$this->storeRequest()
, opět funguje pro další presentery jen
ne pro tento.
¯¯\_( ͡° ͜ʖ ͡°)_/¯
Nedaří se mi najít nic speciálního ohledně tohoto presenteru, má pár handle metod, actionDefault, renderDefault a dvě primitivní komponenty. Nikde (pokud mi teda něco neuniká se nesahá na session). Po vyhození flash message následuje normální redirect a AJAX by tu tudíž neměl hrát žádnou roli.
Takže samotným presenterm by to být nemělo, jediná specialita by mohla být v routeru, pro nasměrování na tento presenter používám filtry:
$frontRouter[] = self::localizedRoute( 'auction/<sale>/<id \d+>', [
'presenter' => 'Lot',
'action' => 'default',
'sale' => [
Route::FILTER_IN => function (string $sale) {
$saleId = (int)(explode('-',$sale)[0]); //[sale_id]-[slug]
return $this->saleManager->getExistingById($saleId);
},
Route::FILTER_OUT => function (Sale $sale) {
return strtolower("{$sale->id}-{$sale->ends->format('F')}");
}
]);
Je možný, že právě díky těmhle filtrů někde „ztratím“ flash message, a storedRequest? Jak se tomu vyhnout? A proč to dělá?
Našel jsem na fóru pár podobných diskusí, ale bohužel v nich nenašel odpověď.
Díky
Editoval TonnyVlcek (20. 9. 2018 20:48)