Chybně se překreslující snippet

mobcz
Člen | 9
+
0
-

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>&nbsp;</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');
		}
	}
mobcz
Člen | 9
+
0
-

Tak za alertBox může Dropzone.js, která je na stránce umístěná.
Ovšem za to, že ten foreach v photosWrap snippetu je po překreslení prázdný, už nemůže…

mobcz
Člen | 9
+
0
-

Vyřešeno… Tím, jak jsem parametr id (id fotky) posílal s názvem „id“, překresloval jsem persistentní id alba. Stačilo přejmenovat parametr.