addUpload a zachovanie hodnoty
- majo1
- Člen | 103
Zdravím, používam vo formulári pre editáciu addUpload:
$form->addUpload('imgBrewery', 'Obrázok pivovaru *')
->addCondition(Form::FILLED)
->addRule(Form::IMAGE, 'Vložte obrázok vo formáte JPEG/PNG/GIF')
->addRule(Form::MAX_FILE_SIZE, 'Maximálne veľkosť súboru je 300 kB.', 300 * 1024);
Všetky inputy sa mi predvyplnia, len addUpload nie. Alebo sa automaticky zakaždým vynuluje?
Nechcem pri editácií záznamu zakaždým nahrávať ten istý obrázok.
Viete mi prosím poradiť, ako na to?
Ďakujem.
- Mysteria
- Člen | 797
Z bezpečnostních důvodů to nejde, mohl bych totiž uživateli
předvybrat nějaký „nebezpečný“ soubor.
Nicméně proč bys musel při editaci pokaždé nahrávat obrázek? Přidej
podmínku, že když uživatel nevybral žádný soubor tak necháš ten
původní a pokud není obrázek povinný, tak ještě nějaké tlačítko na
jeho vynulování.
- majo1
- Člen | 103
vedel by si mi prosím pomôcť so zostavením tejto podmienky?
neviem totiž, čo mám porovnávať a čo k čomu priradiť.
(neviem, či addUpload obsahuje defaulte prázdnu hodnotu – aj po naplnení
celého formuláru so setDefaults, či musím success funkcii priradiť
parameter s cestami k súboru atď)
- majo1
- Člen | 103
V modeli
public function saveBrewery($values)
{
if (!$values['idbrewery'])
$this->db->insert('?', $values)->into('brewery')->execute();
else
$this->db->update('brewery', $values)->where('idbrewery = ?', $values['idbrewery'])->execute();
}
V presenteri render
public function renderUpravPivovar($idexhibition, $idbrewery)
{
//load single brewery
if ($idbrewery) ($getBrewery = $this->vystavaManager->getBrewery($idexhibition, $idbrewery)) ? $this['upravitPivovarForm']->setDefaults($getBrewery) : $this->flashMessage('Žiadaná výstava neexistuje!');
$this->template->breweryinfo = $this->vystavaManager->getBrewery($idexhibition, $idbrewery);
}
V presenteri component form
protected function createComponentUpravitPivovarForm()
{
$exhibition = (int)$this->getParameter('idexhibition');
//var_dump($this->context->parameters['wwwDir']); exit;
$form = new Form;
$form->addHidden('idbrewery');
$form->addText('name', 'Názov pivovaru *')->setRequired();
//$form->addText('imgBrewery', 'Obrázok pivovaru *')->setRequired();
//$form->addText('imgBreweryteam', 'Obrázok tímu pivovaru *')->setRequired();
$form->addUpload('imgBrewery', 'Obrázok pivovaru *')
->addCondition(Form::FILLED)
->addRule(Form::IMAGE, 'Vložte obrázok vo formáte JPEG/PNG/GIF')
->addRule(Form::MAX_FILE_SIZE, 'Maximálne veľkosť súboru je 300 kB.', 300 * 1024);
$form->addUpload('imgBreweryteam', 'Obrázok tímu pivovaru *')
->addCondition(Form::FILLED)
->addRule(Form::IMAGE, 'Vložte obrázok vo formáte JPEG/PNG/GIF')
->addRule(Form::MAX_FILE_SIZE, 'Maximálne veľkosť súboru je 300 kB.', 300 * 1024);
$form->addText('www', 'Webová stránka pivovaru');
$form->addHidden('exhibition', $exhibition);
$form->addInteger('breweryOrder', 'Poradie')
->setRequired()
->addRule(Form::RANGE, 'Poradie musí byť hodnota od 0 do 999', [0, 999]);
$form->addSelect('enabled', 'Povoliť?', ['1' => 'Áno', '0' => 'Nie'])
->setDefaultValue('1');
$form->addSubmit('submit', 'Uložiť');
$form->onSuccess[] = [$this, 'upravitPivovarFormSucceeded'];
return $form;
}
V presenteri succeed
public function upravitPivovarFormSucceeded($form, $values)
{
$values = $form->getValues();
$fileBrewery = $values->imgBrewery;
$fileBreweryteam = $values->imgBreweryteam;
if($fileBrewery->isImage() and $fileBrewery->isOk()) {
$file_ext=strtolower(mb_substr($fileBrewery->getSanitizedName(), strrpos($fileBrewery->getSanitizedName(), ".")));
$file_name = uniqid(rand(0,20), TRUE).$file_ext;
$fileBrewery->move($this->context->parameters['wwwDir'] . '/img/pivovary/'. $file_name);
$values->imgBrewery = 'img/pivovary/'. $file_name;
}
if($fileBreweryteam->isImage() and $fileBreweryteam->isOk()) {
$file_ext=strtolower(mb_substr($fileBreweryteam->getSanitizedName(), strrpos($fileBreweryteam->getSanitizedName(), ".")));
$file_name = uniqid(rand(0,20), TRUE).$file_ext;
$fileBreweryteam->move($this->context->parameters['wwwDir'] . '/img/pivovary/'. $file_name);
$values->imgBreweryteam = 'img/pivovary/'. $file_name;
}
try {
$this->vystavaManager->saveBrewery($values);
$this->flashMessage('Pivovar uložený.');
$this->redirect('Vystava:uprav', $values->exhibition);
} catch (UniqueConstraintViolationException $ex) {
$this->flashMessage('Pivovar s týmto ID už existuje!');
}
}
Editoval majo1 (9. 1. 2017 10:58)
- Mysteria
- Člen | 797
Tak zkus normálně jednoduše:
if (!empty($values->imgBrewery)) {
if ($fileBrewery->isImage() and $fileBrewery->isOk()) {
$file_ext = strtolower(mb_substr($fileBrewery->getSanitizedName(), strrpos($fileBrewery->getSanitizedName(), ".")));
$file_name = uniqid(rand(0, 20), TRUE) . $file_ext;
$fileBrewery->move($this->context->parameters['wwwDir'] . '/img/pivovary/' . $file_name);
$values->imgBrewery = 'img/pivovary/' . $file_name;
}
} else {
unset($values->imgBrewery);
}
if (!empty($values->imgBreweryteam)) {
if ($fileBreweryteam->isImage() and $fileBreweryteam->isOk()) {
$file_ext = strtolower(mb_substr($fileBreweryteam->getSanitizedName(), strrpos($fileBreweryteam->getSanitizedName(), ".")));
$file_name = uniqid(rand(0, 20), TRUE) . $file_ext;
$fileBreweryteam->move($this->context->parameters['wwwDir'] . '/img/pivovary/' . $file_name);
$values->imgBreweryteam = 'img/pivovary/' . $file_name;
}
} else {
unset($values->imgBreweryteam);
}
- majo1
- Člen | 103
to mi ale tracy vyhodí chybu:
SQL translate error: Unexpected Nette\Http\FileUpload
UPDATE `brewery`
SET `idbrewery`='2', `name`=':) happy.', `imgBrewery`=**Unexpected Nette\Http\FileUpload**,
`imgBreweryteam`=**Unexpected Nette\Http\FileUpload**, `www`='', `exhibition`='2', `breweryOrder`=0,
`enabled`=1
WHERE idbrewery = '2'
Editoval majo1 (9. 1. 2017 13:30)