Chybně se překreslující snippet
- mobcz
- Člen | 9
Zdravím,
mám problém s překreslením snippetů. Přes n:href
odkaz
zavolám handler, který v pořádku proběhne (uvnitř je update, který také
proběhne) a následně volám $this->redrawControl()
pro
wrapper s obsahem a pro alertBox, který mi vykresluje flash message.
V response je to správně napůl – javascript ve snippetu alertBox obsahuje správné údaje, ale flashMessage se nezobrazí (snippet se reálně nepřekreslí), wrapper s obsahem se překreslí, ovšem nevleze do něj žádný obsah, takže se zobrazí jen prázdný blok.
Netušíte prosím někdo, co bych mohl mít špatně? Kód přikládám níže. Moc díky!
Latte (komentářem vyznačeno ve které části je odkaz na handler který volám):
{snippet photosWrap}
<div id="photoContainer">
{var $i = 1}
{foreach $presenter->getPhotos() as $key => $photo}
{if $i === 1}
<div class="row">
{/if}
<div class="col-lg-3 photo-block" style="margin: 15px 0;">
{if $photo['main'] === 1}
<p><i>Titulní fotka</i> <i class="fa fa-star gold"></i></p>
{else}
<p> </p>
{/if}
<div class="container-image">
<a class="photo-link {if $photo['main'] === 1}main-photo{/if}" href="/gallery/{$presenter->getAlbumTitle()}/{$photo['name']}" data-lightbox="rel" data-title="{$photo['name']}">
<img src="/gallery/{$presenter->getAlbumTitle()}_thumbs/{$photo['name']}" />
<div class="image-overlay">
<div class="text-overlay">
<p class="photo-title">{if strlen($photo['name']) > 20}{substr($photo['name'],0,20)}...{else}{$photo['name']}{/if}</p>
<p class="photo-date">{$photo['system_created']|date:'%d.%m.%Y, %H:%M:%S'}</p>
</div>
</div>
</a>
</div>
<br />
<p><span class="editable {$photo['id']}" data-short="{if strlen($photo['name']) > 20}{substr($photo['name'],0,20)}...{else}{$photo['name']}{/if}" data-fullname="{$photo['name']}"><strong>{if strlen($photo['name']) > 20}{substr($photo['name'],0,20)}...{else}{$photo['name']}{/if}</strong></span>
<span class="inline-edit {$photo['id']}"><button id="{$photo['id']}" class="btn btn-default cancel">Zrušit</button> <button id="{$photo['id']}" data-lang="{$presenter->getLocale()}" class="btn btn-primary save ajax">Uložit</button></span>
<a id="{$photo['id']}" class="edit {$photo['id']} fa fa-edit"></a></p>
{* ODKAZ NA HANDLER *}
<p>{if $photo['main'] === 1}<a class="ajax" n:href="unsetMain! id => $photo['id'], album => $presenter->getParameter('id')">Odebrat z titulních fotek <i class="fa fa-star gold"></i></a>{else}<a class="ajax" n:href="setMain! id => $photo['id'], album => $presenter->getParameter('id')">Přidat mezi titulní fotky <i class="fa fa-star gold"></i></a>{/if}</p>
<br />
</div>
{if $i === 4}
</div>
{var $i = 1}
{else}
{var $i = $i + 1}
{/if}
{/foreach}
</div>
{/snippet}
PHP
public function getPhotos()
{
return $this->database->table('gallery_photos')->select('*')->where('locale', 'cz')->where('albums', $this->id)->fetchAll();
}
public function handleSetMain($id, $album)
{
$this->id = $album;
$update = $this->database->table('gallery_photos')->where('related', $id)->update([
'main' => 1
]);
if ($update) {
$this->setFlashMessage(1, 'success', Constants::SUCCESS_MAIN_PHOTO_SET);
$this->redrawControl('alertBox');
$this->redrawControl('photosWrap');
} else {
$this->setFlashMessage(1, 'success', Constants::ERROR_MAIN_PHOTO_SET);
$this->redrawControl('alertBox');
$this->redrawControl('photosWrap');
}
}