Problém s třídou FileUpload
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- TomasG
- Člen | 23
Zdravím,
nevím si rady s následujícím „problémem“. Nejspíše to bude nějaká
pitomost, ale jelikož jsem úplný začátečník, tak si nevím rady.
Mám model:
<?php
namespace App\Model;
use Nette,
Nette\Database\Context AS NDatabase;
/**
* Upload File Model
*/
class UploadFileModel extends Nette\Object
{
private $db;
public function __construct(NDatabase $db)
{
$this->db = $db;
}
public function getFilesTypes()
{
return $this->db->table('filetype')->fetchPairs('id', 'name');
}
}
A Presenter:
<?php
namespace App\Presenters;
use Nette,
Nette\Application\UI\Form,
Nette\Http\FileUpload,
App\Model\UploadFileModel;
//Nette\Utils\ArrayHash,
/**
* Files presenter.
*/
class FilesPresenter extends BasePresenter
{
private $uploadFileModel;
public function __construct(UploadFileModel $uploadFileModel) {
parent::__construct();
$this->uploadFileModel = $uploadFileModel;
}
protected function createComponentUploadFileForm()
{
$form = new Form;
$form->addText('fileName', 'Název:');
$form->addSelect('fileType', 'Typ souboru:', $this->uploadFileModel->getFilesTypes())
->setPrompt('Vyberte typ souboru')
->setRequired();
$form->addUpload('file', 'Vybrat soubor:')
->setRequired();
$form->addSubmit('send', 'Nahrát');
$form->onSuccess[] = array($this, 'uploadFileFormSucceeded');
return $form;
}
public function uploadFileFormSucceeded(Form $form, $values)
{
/** @var \Nette\Http\FileUpload */
$values = $form->getValues();
}
}
Jde mi o to, že nemůžu používat metody z \FileUpload – ->isOK(),
->move() atd.
Ale už si opravdu nevím rady, jak to „připojit“ aby to jsem k nim měl
přístup.
Děkuji :o)
- Eda
- Backer | 220
V metodě uploadFileFormSucceeded
dostáváš v argumentu
celou instanci tvého formu. Tzn. stačí si sáhnout na požadovaný
formulářový prvek.
public function uploadFileFormSucceeded(Form $form, $values)
{
/** @var \Nette\Http\FileUpload */
$fileUpload = $form['file'];
if ($fileUpload->isOk()) {
...
}
}
- David Kudera
- Člen | 455
$values->file->isOk();
Edit: jen dodám, že přístup přes form vrátí celý prvek formu a ne
jeho hodnotu, muselo by se udělat
$form['file']->getValue()->isOk()
.
Editoval David Kudera (17. 5. 2015 11:10)