FlashMessage se po redirectu nezobrazí
- akmt
- Člen | 20
Ahoj,
po několikahodinovém pátrání a googlování jsem skončil na začátku,
tedy nevím, co může způsobovat, že po úspěšném odeslání formuláře a
redirectu se flashMessage nevypíše.
Když $this->redirect('this');
odstraním, tak se flashMessage
zobrazí bez problémů.
Nefunguje to na lokálu ani na webhostingu (Blueboard).
class PagePresenter extends BasePresenter
{
...
public function inquiryFormSucceeded(Form $form, array $values): void
{
$sendEmail = true;
$opportunity = $this->opportunityManager->addFullInquiry($this->userurl, $this->userip, $this->useragent, $values);
...
$this->flashMessage('Děkujeme za Vaší poptávku, budeme Vás kontaktovat co nejdříve.');
$this->redirect('this');
}
...
}
layout.latte
{snippet flashes}
<div n:foreach="$flashes as $flash" n:class="flash, $flash->type">{$flash->message}</div>
{/snippet}
konfigurace
session:
expiration: 5 days
autoStart: smart # výchozí hodnota je 'smart'
cookieSamesite: Lax
http:
cookieSecure: true
Jak to vypadá v debugerru: https://pasteboard.co/JWEGN5R.png
Děkuji předem za pomoc.
Editoval akmt (10. 4. 2021 10:40)
- David Matějka
- Moderator | 6445
Ahoj, přenáší se v url parametr _fid s hodnotou, která odpovídá tomu klíči v debuggeru?
- akmt
- Člen | 20
David Matějka napsal(a):
Ahoj, přenáší se v url parametr _fid s hodnotou, která odpovídá tomu klíči v debuggeru?
Ahoj, ano, přenáší:
…/kontakt?_fid=zyeb
array
'Contributte\Translation\LocalesResolvers\Session' => null
'Nette.Application.Flash/aqcb' => array
'flash' => array
0 => stdClass
message: 'Děkujeme za Vaší poptávku, budeme Vás kontaktovat co nejdříve.'
type: 'info'
'Nette.Application.Flash/zyeb' => array
'flash' => array
0 => stdClass
message: 'Děkujeme za Vaší poptávku, budeme Vás kontaktovat co nejdříve.'
type: 'info'
'pageMenu-flash' => null
'pageMenu-pageMenu-flash' => null
'pageMenu-pageMenu-pageMenu-flash' => null
'Nette.Http.UserStorage/' => array
'authenticated' => null
'identity' => null
'reason' => null
- akmt
- Člen | 20
ViPErCZ napsal(a):
Debugněte co se dostane do šablony… zdá se že data jsou k dispozici, jen se nedostanou do šablony a nebo se ta proměnná jmenuje jinak než flashes.
Vyzkoušen dump($this->template)
, ale
flashes: array (0)
:
Nette\Bridges\ApplicationLatte\DefaultTemplate
domain: 'project.test'
lang: 'cs'
locale: 1
settings: Nette\Database\Table\ActiveRow
table: Nette\Database\Table\Selection
data: array
dataRefreshed: false
navigationitems: Nette\Database\Table\Selection
menus: Nette\Database\Table\Selection
presenter: App\FrontModule\Presenters\PagePresenter
control: App\FrontModule\Presenters\PagePresenter
user: Nette\Security\User
baseUrl: 'https://www.project.test'
basePath: ''
flashes: array (0)
latte: Latte\Engine
file: null
- akmt
- Člen | 20
Ještě verze PHP a knihoven:
PHP 8.0.3
4vplacek/qr-platba 1.0.2
chillerlan/php-qrcode 4.3.0
chillerlan/php-settings-container 2.1.1
contributte/application v0.5.1
contributte/translation v0.7.1
firebase/php-jwt v5.2.1
guzzlehttp/guzzle 7.3.0
guzzlehttp/promises 1.4.1
guzzlehttp/psr7 1.8.1
james-heinrich/getid3 v1.9.20
latte/latte v2.10.3
league/oauth2-client 2.6.0
nette/application v3.1.2
nette/bootstrap v3.1.1
nette/caching v3.1.1
nette/component-model v3.0.1
nette/database v3.1.1
nette/di v3.0.8
nette/finder v2.5.2
nette/forms v3.1.3
nette/http v3.1.1
nette/mail v3.1.6
nette/neon v3.2.2
nette/php-generator v3.5.3
nette/robot-loader v3.4.0
nette/routing v3.0.2
nette/schema v1.2.1
nette/security v3.1.3
nette/utils v3.2.2
paragonie/random_compat v9.99.100
psr/http-client 1.0.1
psr/http-message 1.0.1
ralouphie/getallheaders 3.0.3
symfony/config v5.2.4
symfony/deprecation-contracts v2.2.0
symfony/filesystem v5.2.6
symfony/polyfill-ctype v1.22.1
symfony/polyfill-intl-grapheme v1.22.1
symfony/polyfill-intl-normalizer v1.22.1
symfony/polyfill-mbstring v1.22.1
symfony/polyfill-php80 v1.22.1
symfony/property-access v5.2.4
symfony/property-info v5.2.4
symfony/string v5.2.6
symfony/translation v5.2.6
symfony/translation-contracts v2.3.0
thenetworg/oauth2-azure v2.0.1
tracy/tracy v2.8.3
ublaboo/datagrid v6.8.1
- akmt
- Člen | 20
ViPErCZ napsal(a):
A z čeho je toto ?
‚Nette.Application.Flash/zyeb‘ ⇒ array
‚flash‘ ⇒ array
0 ⇒ stdClass
message: ‚Děkujeme za Vaší poptávku, budeme Vás kontaktovat co nejdříve.‘
type: ‚info‘Debugem jsem myslel xDebug a ne var_dump (dump).
Jestli chápu správně, tak pro xDebug je potřeba PhpStorm?
Jinak jsem promazal cookies a cache, teď je tam správně právě jeden _fid. Situaci to ale nevyřešilo.
- Kamil Valenta
- Člen | 820
Nevytváří se s každým requestem nová sessiona? Když v nějaké actioně něco do sessiony zapíšeš, uděláš redirect, přečteš tu zapsanou hodnotu korektně?
- akmt
- Člen | 20
Kamil Valenta napsal(a):
Nevytváří se s každým requestem nová sessiona? Když v nějaké actioně něco do sessiony zapíšeš, uděláš redirect, přečteš tu zapsanou hodnotu korektně?
Vyzkoušeno přes $this->getSession('nazev')
a po redirectu
je session v jiném presenteru viditelná. Takže toto funguje správně.