Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
Je débute dans le Zend Framework et je suis en train de l'appliquer en tant que module et non en MVC (pour le moment).
J'ai donc créé un formulaire d'upload :
$nom = new Zend_Form_Element_Text('nom');
$nom->setLabel("Nom du lieu :");
$nom->setRequired(true);
$nom->setErrorMessages($this->errorMessages);
$nom->setDecorators($this->elementDecorators);
$this->addElement($nom);
$complement = new Zend_Form_Element_Textarea('complement');
$complement->setLabel("Complément :");
$complement->setRequired(false);
$complement->setDecorators($this->elementDecorators);
$this->addElement($complement);
$document = new Zend_Form_Element_File('document');
$document->setLabel("Document associé :");
$document->setRequired(false);
$document->setDestination(REP_TMP);
$document->setDecorators($this->elementDecorators);
$this->addElement($document);
$idLieu = new Zend_Form_Element_Hidden('idLieu');
$idLieu->setRequired(false);
$this->addElement($idLieu);
$submitButton = new Zend_Form_Element_Submit('submit_evenement');
$submitButton->setLabel("Valider");
$submitButton->setValue("Valider");
$submitButton->setDecorators($this->elementSubmit);
$this->addElement($submitButton);
Jusque là tout vas bien.
En premier lieu je souhaite faire un move_upload_file pour le mettre dans un dossier approprié tout en renommant le fichier.
Le code ci dessous ne fonctionne pas !
$dest = REP_DOCUMENT.$nomFichier;
if($form->document->isUploaded())
{
$move = move_uploaded_file($form->document, $dest);
}
La deuxieme question est pour récupérer le type mime d'un fichier uploadé je passe par le variable $_FILES.
Il y a t-il une solution via le ZF.
Par avance Merci
Hors ligne
Salut,
Pour répondre à ta première question, il faut préciser à zend ceci :
this->setAttrib('enctype', 'multipart/form-data');
Si cela peut d'aider, il y'a un bon tuto à cette adresse http://akrabat.com/2008/11/29/file-uplo … ment_file/
Hors ligne
Merci pour ton aide !
J'ai encore des problèmes.
J'ai essayé de suivre le tuto mais des que j'active le setDestination();
J'ai une erreur.
Voici mon code :
public function init($options = null)
{
parent::init($options);
$this->setName('upload');
$this->setAttrib('enctype', 'multipart/form-data');
$description = new Zend_Form_Element_Text('legende');
$description->setLabel('Légende')
->setRequired(true)
->addValidator('NotEmpty');
$file = new Zend_Form_Element_File('fichierDocument');
$file->setLabel('Fichier')
//->setDestination(BASE_PATH . '/data/uploads')
->setRequired(true);
$submit = new Zend_Form_Element_Submit('submit');
$submit->setLabel('Upload');
$this->addElements(array($description, $file, $submit));
}
Dans mon controller :
// Création du formulaire et déclaration des paramètres généraux
$form = new Zfbook_Form_Document();
$form->setAction($this->view->link('document' , 'edit', null, '', 'default', !$isUpdate))
->setMethod('post')
->setDefaults($document->toArray());
// Création du formulaire et ajout/suppression
if ($this->getRequest()->isPost() && $form->isValid($_POST))
{
$formData = $this->_request->getPost();
// Retrait des informations depuis les données en POST
// et ajout dans le modèle.
$values = $form->getValues();
if($values['idDocument'] == "")
{
$values['idDocument'] = md5(microtime());
}
if($_FILES['fichierDocument']['error']==0)
{
$fichier = Zfbook_MyFramework_FichierFactory::factory($_FILES['fichierDocument']);
$nomFichier =$values['idDocument'].$fichier->makeExtension();
$dest = BASE_PATH."documents/".$nomFichier;
if($form->fichierDocument->isUploaded())
{
$form->fichierDocument->receive();
$location = $form->fichierDocument->getFileName();
$move = move_uploaded_file($location, "/documents");
}
$document['fichierDocument'] = $nomFichier;
}
$document->setFromArray(array_intersect_key($values, $document->toArray()));
// Sauvegarde des informations
$document->save();
// Redirection vers la liste des réservations
// $this->_redirect('/lieu/list');
}
// Assignation du formulaire pour affichage
$this->view->form = $form;
J'utilise l'architecture MVC par défaut.
Si quelqu'un peut m'eclairer !!
Dernière modification par jbunel (02-03-2009 23:55:50)
Hors ligne
je pense que tu as une erreur car tu fais un
$move = move_uploaded_file($location, "/documents");
il ne doit pas trouver le fichier à déplacer car tu l'as déjà déplacé.
c'est justement le role du setdestination qui est appelé dans la méthode receive (qui est peut être appelé dans le save ?)
Hors ligne