Volání `flashMessage()` v `createComponent…` funkci

matronator
Člen | 37
+
0
-

Když zavolám v některé z createComponentX metod funkci $this->flashMessage(), tak se sice zpráva uloží do session, ale již se nevykreslí. Zároveň pak z těch session nemizejí, ale zůstávají uložené. Je to správné chování, nebo chyba v Nette? Jak to vyřešit aby se zpráva ukazovala?

Gappa
Nette Blogger | 199
+
+3
-

matronator napsal(a):

Když zavolám v některé z createComponentX metod funkci $this->flashMessage(), tak se sice zpráva uloží do session, ale již se nevykreslí. Zároveň pak z těch session nemizejí, ale zůstávají uložené. Je to správné chování, nebo chyba v Nette? Jak to vyřešit aby se zpráva ukazovala?

Každá komponenta má vlastní flash message stack, je potřeba zavolat $this->getPresenter()->flashMessage().

Šaman
Člen | 2635
+
+5
-

Anebo si ty message vypsat na úrovni komponenty.

matronator
Člen | 37
+
0
-

Gappa napsal(a):

matronator napsal(a):

Když zavolám v některé z createComponentX metod funkci $this->flashMessage(), tak se sice zpráva uloží do session, ale již se nevykreslí. Zároveň pak z těch session nemizejí, ale zůstávají uložené. Je to správné chování, nebo chyba v Nette? Jak to vyřešit aby se zpráva ukazovala?

Každá komponenta má vlastní flash message stack, je potřeba zavolat $this->getPresenter()->flashMessage().

Ano, tak to volám, ale stejně se nezobrazí, i když do session se uloží. Dokonce je vidět i když dumpnu $this->template, ale prostě pak v té šabloně jako takové už nic.

matronator
Člen | 37
+
0
-

Šaman napsal(a):

Anebo si ty message vypsat na úrovni komponenty.

Zkoušel jsem, také to nefunguje když to zavolám v té createComponentX funkci.

nightfish
Člen | 474
+
0
-

matronator napsal(a):
Ano, tak to volám, ale stejně se nezobrazí, i když do session se uloží. Dokonce je vidět i když dumpnu $this->template, ale prostě pak v té šabloně jako takové už nic.

Jakým způsobem/kódem flash message v šabloně vykresluješ?

Kamil Valenta
Člen | 762
+
0
-

Nezpracováváš tu komponentu ajaxově? Pak bys musel vykreslení flash msg obalit snippetem a ten invalidovat.

matronator
Člen | 37
+
0
-

nightfish napsal(a):

Jakým způsobem/kódem flash message v šabloně vykresluješ?

To si myslím je nepodstatný, jelikož když to přesunu do jakékoliv jiné lifecycle funkce, např. renderDefault() tak se již vykreslí v pohodě. Ale vykresluji je takto:

<main>
	{block #flashmessages}
		<div n:snippet="flashes">
			{foreach $flashes as $flash}
				{var $flashTypeClass = 'alert-' . $flash->type}

				<div n:class="flash, $flash->type, alert, $flashTypeClass" role="alert">
					{$flash->message}

					<button role="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
				</div>
			{/foreach}
		</div>
	{/block}

	{include #content}
</main>
mystik
Člen | 292
+
+3
-

Urcite se to createComponent vola driv nez flash messages vykreslujes? Jestli neni problem v tom ze nejdriv vykreslis flash messages a az potom neco vyvola vytvoreni komponenty.