Odkaz na handle po překreslení snippetu
- majk118
- Člen | 4
Zdravím, snažím se udělat „aplikaci“ na evidenci řekněme pro
zaměstnance. Má podobu kalendáře s tím že je zobrazen vždy jeden měsíc
a úkoly se zapisují do jednotlivých dní.
Měsíce se přepínají pomocí linků na kterých je navěšen handle a
ajaxově překreslí celou stránku včetně odkazů na jiné měsíce. Problém
mám, když se provede nějaká akce např. smazání úkolu. Po úspěšném
smazání úkolu dojde ke stejnému překreslení celé stránky, aby úkol
zmizel z kalendáře ale to mi poté rozbije odkazy na měsíce.
odkaz před provedením akce:
<a class="ajax" href="/dochazka/www/?year=2016&month=12&do=showMonth">12</a>
odkaz po provedením akce:
<a class="ajax" href="/dochazka/www/calendar-delete-event?year=2016&month=12&id=43&do=showMonth">12</a>
Latte:
<div n:snippet="calendar">
<ul class="pagination pagination-sm">
{for $i = 1; $i <= 12; $i++}
{if $calendarData->month === $i}
<li class="active"><a>{$i}</a></li>
{else}
<li><a class="ajax" n:href="showMonth! ,$calendarData->year,$i">{$i}</a></li>
{/if}
{/for}
</ul>
<div id="calendar-body">
{foreach .......... }
<a n:href="deleteEvent,$event->id" class="ajax delete-event" title="smazat záznam">
<i class="fa fa-trash-o"></i>
</a>
{/foreach}
</div>
</div>
Presenter:
<?php
public function renderDefault () {
$this->template->calendarData = $this->model->getCalendar();
}
public function handleShowMonth ( $year, $month ) {
$this->template->calendarData = $this->model->getCalendar($year, $month);
if($this->isAjax()) {
$this->redrawControl('calendar');
}
}
public function actionDeleteEvent( $id ) {
$eventData = $this->model->getEventData($id);
$result = $this->model->deleteEvent( $id );
if ( $result ){
$this->template->calendarData = $this->model->getCalendar($eventData->year,$eventData->month);
$this->setView('default');
$this->redrawControl('calendar');
}
}
?>
Když vyměním handle za action, tak se toto neděje. Je mi jasné, že tam
mám soustu chyb protože se teprve učím bastlit metodou pokus omyl, ale co
dělám spatně v tomto případě?
Díky
- CZechBoY
- Člen | 3608
Přesměruj místo přenastavení view
public function actionDeleteEvent( $id ) {
$eventData = $this->model->getEventData($id);
$result = $this->model->deleteEvent( $id );
if ( $result ){
$this->template->calendarData = $this->model->getCalendar($eventData->year,$eventData->month);
$this->redirect('default');
}
}
Editoval CZechBoY (18. 12. 2016 19:02)