Nepřekresluje se snippet, i když response je správná
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.

- mobcz
 - Člen | 9
 
Zdravím,
mám problém s nepřekreslujícím se snippetem.
Na jiných stránkách u webu mi to funguje v pořádku, i na téhle
problémové v response dostanu snippet photosWrap se správnou hodnotou a to
samé pro alertBox. Bohužel ale na stránce se reálně nic nepřekreslí.
Na stránce mám Dropzone.js formulář pro nahrávání fotek a ty se
zpracovávají ve funkci uploadPhoto().
Nesetkal jste se prosím někdo s něčím podobným a podařilo se Vám to
vyřešit? Nebo netušíte někdo prosím, v čem by mohla být chyba? Kód
přikládám níže, díky moc! (snippet alertBox je v
@layout.latte)
Latte
                    <form n:name="uploadPhotosForm" class="dropzone ajax" id="my-dropzone"></form>
                    <br />
                    <hr />
                    <br />
                    {snippet photosWrap}
                        {foreach $presenter->getPhotos() as $key => $photo}
                            <p>{$photo['name']}</p>
                        {/foreach}
                    {/snippet}
PHP
	public function uploadPhotos($form)
	{
		$values = $form->getValues(true);
		$file = $form->getHttpData($form::DATA_FILE, 'file');
		$path = __DIR__ . "/../../www/gallery/".$values['albumName'];
		$thumbPath = __DIR__ . "/../../www/gallery/".$values['albumName'] . "_thumbs";
		if (!file_exists($path)) {
			mkdir($path, 0777, true);
		}
		if (!file_exists($thumbPath)) {
			mkdir($thumbPath, 0777, true);
		}
		$actual_name = pathinfo($file->name,PATHINFO_FILENAME);
		$original_name = $actual_name;
		$extension = pathinfo($file->name, PATHINFO_EXTENSION);
		$i = 1;
		$name = $file->name;
		while(file_exists($path.'/'.$actual_name.".".$extension))
		{
			$actual_name = (string)$original_name.$i;
			$name = $actual_name.".".$extension;
			$i++;
		}
		$file->move($path .'/'. $name);
		$image = Image::fromFile($path .'/'. $name);
		if($image->getWidth() > $image->getHeight()) {
			$image->resize(240, 240, Image::EXACT | Image::SHRINK_ONLY);
		}
		else {
			$image->resize(240, 240, Image::EXACT | Image::SHRINK_ONLY);
		}
		$image->sharpen();
		$image->save($path . '_thumbs/'. $name);
		$newRow = $this->database->table('gallery_photos')->insert([
			'albums' => $values['albumId'],
			'name' => $name,
			'title' => $name,
			'description' => null,
			'locale' => 'cz',
			'system_created' => $this->getCurrentTimestamp()
		]);
		$lastId = $this->database->table('gallery_photos')->select('id')->order('id DESC')->limit(1)->fetch();
		$this->setFlashMessage(1, 'success', Constants::SUCCESS_PHOTO_UPLOADED);
		$this->redrawControl('alertBox');
		$this->redrawControl('photosWrap');
	}
				
- mobcz
 - Člen | 9
 
Musel jsem nakonec získat v javascriptu response od Dropzone a v závislosti na ní volat handler, který snippet překreslí.
<script>
    $(function() {
        Dropzone.autoDiscover = false;
        $(function() {
            // Now that the DOM is fully loaded, create the dropzone, and setup the
            // event listeners
            var myDropzone = new Dropzone("#my-dropzone");
            myDropzone.on("complete", function(file) {
                $.nette.ajax({
                    'url': {link updatePhotos!}
                });
            });
        })
    });
    </script>