upload souboru – Call to a member function isOk() on a non-object

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Dave3991
Člen | 14
+
0
-
public function UploadFormSucceeded($form) {
    $values = $form->getValues();
    dump($values);

    $file = $form['files']->getValue();
    dump($file);
   if($file->isOk()){ // tady je problém, používám nette 2.2.x
        $file->move('WWW_DIR' . "./");
         $this->flashMessage('Upload succesful.');
   }
}

$file by měl být objekt třídy „Nette\Http\FileUpload“ takže by mělo fungovat isOk() a taky případně move a další, avšak nefunguje.

pokud to napíšu takhle

      if($form['files']->isOk()){
//     $file->move('WWW_DIR' . "./");
//     $this->flashMessage('Upload succesful.');
     }

získám toto chybu „Call to undefined method Nette\Forms\Controls\UploadControl::isOk()“

David Matějka
Moderator | 6445
+
+3
-

Dle mnozneho cisla „files“ predpokladam, ze pouzivas multiple file upload. Takze ve value nebude FileUpload, ale pole s FileUpload…

Dave3991
Člen | 14
+
0
-

ano je to tak

Dave3991
Člen | 14
+
0
-

vyřešeno – při multiple file uploadu je zapotřebí použít foreach

public function UploadFormSucceeded($form) {
    $values = $form->getValues();
    dump($values);

    $files = $form['files']->getValue();
    dump($files);
    foreach ($files as $file) {
        if ($file->isOk()) {
           $file->move('WWW_DIR','./');
           $this->flashMessage('Upload succesful.');
        }
    }
}