Nepřekresluje se snippet, i když response je správná
- 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>