Komponenta s více templates – překreslení ajaxem

MikeLacroix
Člen | 60
+
0
-

Zdravím,

mám komponentu Calendar, k ní dvě šablony year.latte a month.latte. Komponentu vytvářím přes {control calendar:month}. V komponentě mám metody renderYear() a renderMonth(). Potud vše v pohodě.

Pokud ale v některé šabloně ajaxem zavolám třeba signál nextYear!, komponenta už pak neví, jestli použít renderYear() nebo renderMonth() (snaží se použít render()).

Jak se toto řeší? Jak elegantně v komponentě zjistit, přes kterou render metodu má být vykreslovaná?

David Matějka
Moderator | 6445
+
+1
-

ahoj, muzes to vyresit napriklad pres snippet area, ale spise nedoporucuji pouzivat vice render metod u komponent, vice viz moje prednaska: https://www.youtube.com/watch?…

MikeLacroix
Člen | 60
+
0
-

Díky. Obalil jsem to do snippetArea:

<?php
{snippetArea calendar} <div n:snippet="month">...</div> {/snippetArea}
?>

a do handleNextYear() jsem přidal invalidaci:

<?php
public function handleNextYear() {
  ...
  $this->redrawControl('calendar');
  $this->redrawControl('month');
}
?>

ale výsledek je stále stejný…

David Matějka
Moderator | 6445
+
+1
-

je potreba obalit do snippetu vykreslovani Controlu a redraw provest na parent komponente (presenteru)