multiupload a html5 v Nette formulářích
- sotech
- Člen | 1
Zdravím všechny.
Snad se ze začátku omluvím, protože jsem pěknou chvíli nesledoval vývoj Nette (na 2.x jsem ještě nepřešel) a tak doufám, že se nebudu ptát na nějakou dávnou vyřešenou věc. S HTML5 přišlo pár zajímavých vylepšení. A tak jsem se chtěl zeptat jestli třeba už není v Nette zakomponovaný multiple upload
<input name="upload[]" type="file" multiple="multiple" >
Já jsem chtěl kdysi tuto vlastnost používat, a protože jsem si plno věcí administroval sám anebo jsem neměl problém zakazníkovi vysvětlit ať na administraci nepoužívá IE, rozšířil jsem si FormContainer.phtml o
public function addMultiFile($name, $label = NULL)
{
return $this[$name] = new MultiFileUpload($label);
}
a přidal Control
// ... namespace ... use
class MultiFileUpload extends FileUpload {
public function __construct($label = NULL)
{
parent::__construct($label);
$this->control->type = 'file';
$this->control->multiple = "multiple";
}
public function setValue($value)
{
if (is_array($value)) {
foreach($value as $val) {
if($val instanceof HttpUploadedFile) {
$this->value[] = $val;
}
}
} elseif ($value instanceof HttpUploadedFile) {
$this->value = $value;
} else {
$this->value = new HttpUploadedFile(NULL);
}
return $this;
}
public function getHtmlName()
{
return parent::getHtmlName() . '[]';
}
// validace ...
}
pak jsem mohl psát.
// create component ... $form
$form->addMultiFile("upload", "Obrázky galerie");
A vše krásně fungovalo jak jsem potřeboval.
Jsou nějaké nové možnosti v Nette 2.x? Vím o MFU addonu (pěkné, ale
když chcete mít komponentu nezávislou na Nette, sáhnete raději třeba po http://developer.yahoo.com/yui/uploader/ )
Díky za osvětu.