FlashMessage se po redirectu nezobrazí

akmt
Člen | 12
+
0
-

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 | 6439
+
0
-

Ahoj, přenáší se v url parametr _fid s hodnotou, která odpovídá tomu klíči v debuggeru?

akmt
Člen | 12
+
0
-

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
Ondřej Kubíček
Člen | 494
+
0
-

není problém, že výpis zpráv máš obalený ve snippetu ?

akmt
Člen | 12
+
0
-

Ondřej Kubíček napsal(a):

není problém, že výpis zpráv máš obalený ve snippetu ?

Zkoušel jsem to i bez toho, ale na zobrazení to nemá vliv. Jediné, o čem přemýšlím, zda na to nemůže vliv třeba využívání Contributte\Translation\Translator…?

ViPEr*CZ*
Člen | 807
+
0
-

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.

akmt
Člen | 12
+
0
-

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 | 12
+
0
-

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
ViPEr*CZ*
Člen | 807
+
0
-

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).

akmt
Člen | 12
+
0
-

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.

ViPEr*CZ*
Člen | 807
+
0
-

No já to tak dělám mno přes PHPStorm… ale Netbeans třeba to taky umí.

Kamil Valenta
Člen | 562
+
0
-

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 | 12
+
0
-

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ě.

akmt
Člen | 12
+
0
-

Problém vyřešen! :-)

V BasePresenteru v metodě setParameters jsem přistupoval k proměnné $this->template->neco. Proměnná přesunuta do startup() a flashMessage se opět zobrazuje.

Díky všem za pomoc.

Editoval akmt (15. 4. 2021 18:33)