Diskuze: nette MultiUpload obrázků

Člen

Zobrazeno 9 zpráv z 9.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |


Zkusil bych jit poporade
enctype="multipart/form-data"
ahoj, hrál jsem si stím a zkoušel jsem možnosti a zjistil jsem že
obrázky k uploadu neprojdou formulářem.
Formulář má
enctype="multipart/form-data"
a v presenteru mám use:
namespace App\CoreModule\Presenters;
use App\CoreModule\Model\ReferenceManager;
use Nette\Application\BadRequestException;
use Nette\Application\UI\Form;
use Nette\Database\UniqueConstraintViolationException;
use Nette\Utils\ArrayHash;
use Nette\Http\FileUpload;
use Nette\Utils\Image;
a zpracování formuláře:
public function editorFormSucceeded($form, $values)
{
// Převede pole obecných souborů na pole obrázků.
$images = array_map(function (FileUpload $image) {
return $image->toImage();
}, $values->images);
$values->offsetUnset('images');
$url = $values->url;
$images_count = $values->images_count;
try {
$this->referenceManager->saveReference($values);
$this->referenceManager->saveReferenceImages($values->url, $images, $values->images_count);
$this->flashMessage('Reference byla úspěšně uložena.');
if ($values->images){
$this->redirect('this');
}else{
$this->redirect(':Core:Reference:', $values->url);
}
} catch (UniqueConstraintViolationException $ex) {
$this->flashMessage('Reference s touto URL adresou již existuje.');
}
}
podmínkou if na redirect jsem testoval, zda prošli obrázky ke
zpracování.
Já nevidím, proč by to nemělo fungovat.
Ještě multiupload do formuláře je přidán takto:
$form->addMultiUpload('images', 'Obrázky')->setAttribute('accept', 'image/*');
Nejsem si jisty, jestli bys mel mit Model pro kazdy Presenter (soudim dle toho, ze mas Model pro Reference) ... Zkus sem hodit cely kod, kterym tvoris formular a rovnou i metodu SaveReferenceImages z referenceManageru
vytvoření formuláře:
protected function createComponentEditorForm()
{
$form = new Form;
$form->addHidden('reference_id');
$form->addHidden('images_count');
$form->addText('title', 'Titulek')->setRequired();
$form->addText('url', 'URL')->setRequired();
$form->addMultiUpload('images', 'Obrázky')->setAttribute('accept', 'image/*');
$form->addText('description', 'Popisek')->setRequired();
$form->addTextArea('content', 'Obsah');
$form->addSubmit('submit', 'Uložit referenci');
$form->onSuccess[] = [$this, 'editorFormSucceeded'];
return $form;
}
SaveReferenceImages:
const IMAGES_PATH = 'images/reference/';
...
public function saveReferenceImages($url, $images, $images_count)
{
$i=0;
foreach ($images as $image) {
$image->resize(null, self::IMAGE_SIZE);
$image->save(self::IMAGES_PATH . $url . '_' . $i . '_' . $images_count . '.jpg', null, Image::JPEG);
$images_count++;
}
}
tato funkce je zjednodušená, abych lépe hledal chybu při
nahrávání.
Ale jak jsem psal v minulém příspěvku, tak už ani do presenteru do
zpracování formuláře FormSucceeded nejpřijdou ty vybrané obrázky.
Alespoň myslím, že podmínka if ($values->images) by měla fungovat a
jelikož vyjde negativně, tím images nic neobsahují.
Achich ouvej
kdyz si das
dump() nebo var_dump() HNED na $values po odeslani formulare, tak tam ty obrazky
jsou nebo ne ?
neumím používat dump()...
udělám dump($values); ? a nic víc? a kam se mi to vypíše?
omlouvám se, nemám moc skušeností s nette začínám sním 
udělal jsem tedy do zpravování formuláře dump()
public function editorFormSucceeded($form, $values)
{
dump($values);
ale vůbec nic to neudělá.
Pole values by se mělo vypsat na stránku že?
Problém je v tom že ve formuláři máš:
$form->onSuccess[] = [$this, 'editorFormSucceeded'];
Ale metoda pro zpracování je
public function saveReferenceImages($url, $images, $images_count)
A prostě editorFormSucceeded !== saveReferenceImages
Zobrazeno 9 zpráv z 9.