Upload suboru na server a ulozenie cesty do DB
- cujan
- Člen | 410
Caute snazim sa dat dokopy upload subor na server na konretne miesto ale uz
som dost zufaly… vocm je problem?
vypisuje chybu Cannot use object of type Nette\Forms\Controls\SubmitButton
as array…
Formular:
<?php
protected function createComponentPolozkaForm($name) {
$hornina = $this->horninaRepository->findAll()->fetchPairs('id','nazov');
$form = new Form;
$form->addText('nazov', 'Nazov')->setRequired('Zvolte nazov');
$form->addText('popis', 'Popis')->setRequired('Zvolte popis');
$form->addSelect('idHornina','Hornina',$hornina);
$form ->addUpload('nazovSuboru', 'Súbor');
$form->addSubmit('uloz','Uloz')->onClick[]= callback($this, 'nazovFormSubmitted');
$form->addSubmit('cancel','Storno')->onClick[]= callback($this, 'cancelFormSubmitted');
return $form;
}
?>
obsluzna metoda
<?php
public function nazovFormSubmitted($form)
{
$values = $form->getForm()->getValues();
//ziska nazov subor
$suborNazov =$values->nazovSuboru->getName( );
//unset($values->nazovSuboru);
//prida nazov suboru do pola $values
//$values["nazovSuboru"]=$suborNazov;
//vybere vlastnosti o subore
$subor = $form['nazovSuboru']->getValue();
//ulozi na server subor
$imgUrl = $this->context->dirs['wwwDir'] . '/images/horniny/' . $subor->name;
$subor->move($imgUrl);
//$this->naleziskaObrazokRepository->vlozObrazok($values);
$id = (int) $this->getParameter('id');
if($id){
$this->horninaObrazokRepository->findById($id)->update($values);
$this->flashMessage('Nazov upraveny');
} else {
$this->horninaObrazokRepository->findAll()->insert($values);
$this->flashMessage('Nazov pridany');
}
//$this->redirect('default');
dump($values);
}
?>
- vvoody
- Člen | 910
$values = $form->getForm()->getValues();
Nepríde ti tento riadok divný? Od formu si pýtať form? Keď naviažeš callback na onClick tlačítka tak ako parameter dostaneš to tlačítko. Takže si to oprav.
public function nazovFormSubmitted($button)
{
$form = $button->getForm();
$values = $form->getValues();
- Jan Suchánek
- Člen | 404
vvoody: Trošku OT není fakt lepší hodit ten soubor do db a až potom si ho vytáhnout já, že takhle musí člověk řešit i konflikty názvů souborů apod. Já uploaduji soubory do spešl tabulky pro soubory a používám ji jen když nemám vytvořenou cache v file systemu, pokud migruji tak jen kopiruji db.
Přijde mi, že řešit konflikty názvů souborů, nekompletnost souborů při případné migraci apod. je naprosto nepoužitelné, navíc do db mohu nahrát klidně x souborů s stejným názvem. Možná je to špatné řešení, ale mě vyhovuje.
Editoval jenicek (6. 2. 2014 11:58)
- cujan
- Člen | 410
jenicek napsal(a):
vvoody: Trošku OT není fakt lepší hodit ten soubor do db a až potom si ho vytáhnout já, že takhle musí člověk řešit i konflikty názvů souborů apod. Já uploaduji soubory do spešl tabulky pro soubory a používám ji jen když nemám vytvořenou cache v file systemu, pokud migruji tak jen kopiruji db.
Přijde mi, že řešit konflikty názvů souborů, nekompletnost souborů při případné migraci apod. je naprosto nepoužitelné, navíc do db mohu nahrát klidně x souborů s stejným názvem. Možná je to špatné řešení, ale mě vyhovuje.
a ako nato? urcite by to bolo najlepsie…
- Jan Suchánek
- Člen | 404
vvoody: No ja data nahraju do db. A pri prvnim pozadavku je cachuji na disk a pak uz je vzdy taham z disku v db mam vzdy jen original.