Nette upload obrazkou pomocou atributu multiple

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
lukacenko
Člen | 10
+
0
-

cawte prosim vas potrebujem poradit, chcem pomocou addUpload() uploadnut obrazky pomocou atributu multiple ale ked si po odoslani postu dam dump POST tak stale mam tam len jeden obrazok ten posledny potrebujem vsetky ako to docielit prosim ? nechcem ziadne komponenty ani nic dakujem.
tu je dump: potrebujem tu vsetky subory nie len jeden

<?php
   caption => "Soubor:" (7)
   value protected => Nette\Http\FileUpload(5) {
      name private => "icon_add.jpg" (12)
      type private => NULL
      size private => 16454
      tmpName private => "C:\\xampp\tmp\phpCEFA.tmp" (24)
      error private => 0
   }
?>

a tu kod:

<?php
protected function createComponentTestForm()
     {
	$form = new Form();
        $form->addUpload('img', 'Soubor:')->setAttribute('multiple', TRUE);
        $form->addSubmit('upload', 'Vložit')->getControlPrototype()->class('button');
        $form->onSuccess[] = callback($this, 'xmlFormSubmitted');
        return $form;
     }
    public function TestFormSubmitted(Form $form)
     {
	dump($form['img']);
	// zobrazi sa mi len posledny subor(obrazok) potrebujem vsetky dakujem
}}
?>
Tomáš Votruba
Moderator | 1114
+
0
-

Možnost nahrát více souborů:

$form->addUpload('img', 'Soubor(y):', TRUE);

Pomocí dump($form['img']); přistupuješ ke komponentě UploadControl, ne jejím k hodnotám.
Zkus takto:

public function TestFormSubmitted(Form $form)
{
	$values = $form->values;
	dump($values['img']);
}

Editoval Tomáš Votruba (20. 2. 2014 14:32)

lukacenko
Člen | 10
+
0
-

Tomáš Votruba napsal(a):

Možnost nahrát více souborů:

$form->addUpload('img', 'Soubor(y):', TRUE);

Pomocí dump($form['img']); přistupuješ ke komponentě UploadControl, ne jejím k hodnotám.
Zkus takto:

public function TestFormSubmitted(Form $form)
{
	$values = $form->values;
	dump($values['img']);
}

skusil som pouzit $form->addUpload(‚img‘, ‚Soubor(y):‘, TRUE); ale potom mi nejde oznacit viac ako jeden obrazok

lukacenko
Člen | 10
+
0
-

diki ide mi to :) ale musel som aktualizovat nette mal som nette 2.0.13 dalo by sa to aj tam nejako rozbehnut prosim ta ? alebo nie ? ulahcilo by mi to mnoho roboty. dakujem

Tomáš Votruba
Moderator | 1114
+
0
-

Tato feature je dostupná od verze 2.1.0

Doporučuji ti spíše opravit chyby vzniklé přechodem, než kvůli nim zůstávat na staré verzi.

Co ti teď nejde?

lukacenko
Člen | 10
+
0
-

Tomáš Votruba napsal(a):

Tato feature je dostupná od verze 2.1.0

Doporučuji ti spíše opravit chyby vzniklé přechodem, než kvůli nim zůstávat na staré verzi.

Co ti teď nejde?

vyhodi mi chybu:
Call to a member function getName() on a non-object search►

<?php
        $file = $form['img']->getValue();
        $name = $file->getName();


?>
lukacenko
Člen | 10
+
0
-

Tu je kod:

<?php
namespace App\Presenters;
use Nette,App\Model;

/**
 * Homepage presenter.
 */

use Nette\Application\UI;
use Nette\Application\UI\Form;
use Nette\Forms\Controls\UploadControl;

class UploadPresenter extends BasePresenter
{

 protected function createComponentImageUploadForm()
     {
        $form = new Form();
//      $form->addUpload('img', 'Subor:');
		$form->addUpload('img', 'Soubor(y):', TRUE);
        $form->addSubmit('upload', 'Vložit')->getControlPrototype()->class('button');
        $form->onSuccess[] = callback($this, 'submit');
        return $form;
     }
    public function submit(Form $form)
     {
        $file = $form['img']->getValue();
        $name = $file->getName();
        $id = $this->getUser()->getId();
        $upload = "/www/data/" . $name . $id;

        if ($file->isOK()){
            $file->move($upload);
        }
		$this->flashMessage($upload, 'success');
	       $this->redirect('this');
     }

}

?>
David Matějka
Moderator | 6445
+
0
-

vrati ti to totiz pole s Nette\Http\FileUpload, musis to projit foreach-em

lukacenko
Člen | 10
+
0
-

funguje to diki :)

lukacenko
Člen | 10
+
0
-

presiel som do noveho nette a potom mi frontmodule hodi: error Call to a member function getService() on a non-object admin module ide normalne neviete mi s tym pomoct ?
na tomto riadku:
v subore File: …\vendor\nette\nette\Nette\Application\UI\Control.php:68

$template->setCacheStorage($presenter->getContext()->getService(‚nette.templateCacheStorage‘));

Editoval lukacenko (21. 2. 2014 8:31)