Nepřekreslí se snippet v komponentě akcí v presenteru

kuon
Člen | 17
+
0
-

Ahoj,
mám několik vnořených komponent: uredniDeska->zprva->diskuse. První dvě načítám přes Multiplier. Přijde mi hloupé mít tam u každé diskuse formulář pro přidání příspěvku, takže mám jen jeden v presenteru a potřebná data si do něj vkládám přes JS. Vše mi funguje, ale po odeslání formuláře se mi nepřekreslí snippet s diskusí. V presenteru volám:

$this['uredniDeska-'.$kod_skupiny]['zprava-'.$kod_zpravy]['diskuse']->handleNacti($kod_diskuse);

A v komponentě mám:

public function handleNacti($h_t)
{
	$this->nacti_diskusi($h_t);
	$this->redrawControl('SNI_diskuse');
}

Handle se mi provede, ale snippet se nepřekreslí – nepřibude tam ten nový koentář. Pokud zavolám signál přímo z komponenty pro odstranění komentáře, tak vše proběhne správně včetně překreslení snippetu. Mám dát raději ten formulář přímo do komponenty diskuse a bude se načítat s každou diskusí nebo to mohu nechat takhle a jde nějak zprovoznit to překreslení snippetu v zanořené komponentě akcí z presenteru?

Marek Bartoš
Nette Blogger | 1171
+
+2
-

Handle bys neměl nikdy volat sám, jeho zpracování je trochu složitější než zavolání metody, viz Presenter->processSignal() Nejspíš ti to nefunguje kvůli tomu.

Nevidím důvod, proč by komponenta pro přidání komentáře neměla být součástí konkrétní diskuze, logicky tam patří. Tím že ji dáváš do presenteru porušuješ zapouzdření a imho si zbytečně komplikuješ život.

Editoval Marek Bartoš (16. 11. 2022 13:11)