Jak na upload souboru do adresáře ve formuláři s ostatními daty posílanými do databáze
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- koprkuba
- Člen | 24
Dobrý den,
mám takovýto formulář:
$form = new NAppForm;
$form->addFile('filepath_kategorie');
$form->addText('car_kod_produkty', 'Bar code:')
->addRule(NForm::FILLED, 'Please enter a Bar code.')
->addRule(NForm::NUMERIC, 'Bar code must be numeric');
$form->addText('nazev_produkty', 'Name:')
->addRule(NForm::FILLED, 'Please enter a name.');
...
$form->addSubmit('save', 'Save')->getControlPrototype()->class('default');
$form->addSubmit('cancel', 'Cancel')->setValidationScope(NULL);
$form->onSubmit[] = callback($this, 'ProduktyFormSubmitted');
Potřeboval bych aby se ten soubor který chci uploadnout nahrál do nějakého adresáře a do databáze se poslala cesta k němu do atributu
filepath_kategorie
společně s dalšími hodnotami z formuláře (vše do jedné
tabulky).
O to se stará tato funkce.
public function produktyFormSubmitted(NAppForm $form) {
if ($form['save']->isSubmittedBy()) {
$id = (int) $this->getParam('id');
$produkty_model = new produkty();
if ($id > 0) {
$produkty_model->update($id, $form->getValues());
$this->flashMessage('The product has been updated.');
} else {
$produkty_model->insert($form->getValues());
$this->flashMessage('The product has been added.');
}
}
$this->redirect('show');
}
Koukal jsem po fóru atp. ale nikde jsem nenašel nic co by mi pomohlo.
P.S. nechci zatím použít žádný javascript, jen v případě že by to
jinak nešlo.
Díky za odpovědi
- Jur4
- Člen | 51
Takhle nějak by měla vypadat metoda na zpracování. Nezkoušel jsem to.
<?php
public function produktyFormSubmitted(NAppForm $form) {
if ($form['save']->isSubmittedBy()) {
$id = (int) $this->getParam('id');
$values = $form->getValues();
$produkty_model = new produkty();
$file = $values["filepath_kategorie"];
if ($file->isOk()) {
$path = "/path/to/upload/" . $file->getName();
$file->move($path);
}
$values["filepath_kategorie"] = $path;
if ($id > 0) {
$produkty_model->update($id, $values);
$this->flashMessage('The product has been updated.');
} else {
$produkty_model->insert($values);
$this->flashMessage('The product has been added.');
}
}
$this->redirect('show');
}
?>