Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
bonjour j'ai une question est ce qu'on peut affecter à un zend_file deux destination ??
par exemple mon zend file est comme ceci
$file = new Zend_Form_Element_File('file'); $file->setLabel('Restaurant Image') ->setAttrib('enctype', 'multipart/form-data') ->setDestination(APPLICATION_PATH . '/../public/backoffice/images/icons/fff') ->setRequired(false);
est ce que je peux ajouter un deuxième - >setDestination ?
je l'ai déjà essayé il prend en compte que la deuxième destination est non pas les deux , quelqu'un aurait il une solution ??
Hors ligne
Je te conseil de faire ta déclaration d'element File comme ceci:
$file = new Zend_Form_Element_File('file'); $file->setLabel('Restaurant Image') ->setAttrib('enctype', 'multipart/form-data') ->setValueDisabled(true) // désactive la réception auto du fichier ->setRequired(false);
et de redéfinir ton isValid():
public function isValid($data) { $valid = parent::isValid($data); if ( $valid ) { $this->file->setDestination(APPLICATION_PATH . '/../public/backoffice/images/icons/fff'); if ( !$this->file->receive() ) { $valid = false; } $this->file->setDestination(APPLICATION_PATH . '/../destination_bis'); if ( !$this->file->receive() ) { $valid = false; } } return $valid; }
Je ne peux pas le tester dans l'immédiat mais en théorie ça devrait fonctionner...
Hors ligne
excuse moi mais je n'ai pas de fonction isvalid() ou peut être je comprend pas bien , peu tu m'expliquer ?
moi je récupère dans mon insertAction() le file avec la méthode receive ,je sais pas ou utilisé cette fonction isvalid
merci pour ta réponse
Hors ligne
Et ton file ne se trouve pas dans une classe qui étend Zend_Form ?
On peut avoir un peu plus de code ?
Hors ligne
voila ma fonction insert
public function insertAction() { $form = new RestaurantForm(); $form->submit->setLabel('insert'); $this->view->form = $form; if ($this->getRequest()->isPost()) { $formData = $this->getRequest()->getPost(); if ($form->isValid($formData)) { $id = $form->getValue('restaurantId'); $restaurantName = $form->getValue('restaurantName'); $fullFilePath = $form->file->receive(); $pathparts = pathinfo($form->file->getFileName()); $full = $pathparts['basename']; $restaurant->insertRestaurant($id, $restaurantName, $restaurantAdress, $minimumCharge, $commissionPourcentage, $user->id, $full); $this->_helper->FlashMessenger(array( 'msg-success' => 'The restaurant was successfully insert.', )); $this->_helper->redirector('index'); } else { $form->populate($formData); } }
et voila mon formulaire
$file = new Zend_Form_Element_File('file'); $file->setLabel('Restaurant Image') ->setAttrib('enctype', 'multipart/form-data') ->setDestination(APPLICATION_PATH . '/../public/backoffice/images/icons/fff') ->setRequired(false);
je voudrais quand la fonction receive se declenche elle envoir le fichier dans deux destination en même temps
Hors ligne
public function insertAction() { $form = new RestaurantForm(); $form->submit->setLabel('insert'); $this->view->form = $form; if ($this->getRequest()->isPost()) { $formData = $this->getRequest()->getPost(); if ($form->isValid($formData)) { $id = $form->getValue('restaurantId'); $restaurantName = $form->getValue('restaurantName'); $fullFilePath = $form->file->receive(); $pathparts = pathinfo($form->file->getFileName()); $full = $pathparts['basename']; $form->file->setDestination('destination2/'); $form->file->receive(); $pathparts2 = pathinfo($form->file->getFileName()); $full2 = $pathparts2['basename']; $restaurant->insertRestaurant($id, $restaurantName, $restaurantAdress, $minimumCharge, $commissionPourcentage, $user->id, $full); $this->_helper->FlashMessenger(array( 'msg-success' => 'The restaurant was successfully insert.', )); $this->_helper->redirector('index'); } else { $form->populate($formData); } }
$file = new Zend_Form_Element_File('file'); $file->setLabel('Restaurant Image') ->setAttrib('enctype', 'multipart/form-data') ->setDestination(APPLICATION_PATH . '/../public/backoffice/images/icons/fff') ->setRequired(false);
Voila...
Hors ligne
merci pour votre réponse mais malheureusement ça ne marche pas , le fichier est envoyé que dans la destination donné au zend form element file
Dernière modification par croux89 (10-05-2012 15:32:24)
Hors ligne
Ou sinon, tout bêtement, tu copie le fichier:
copy('chemin A', 'chemin B');
Hors ligne
ça ne marche pas peut être que je donne pas le chemin exacte j'ai fait comme ceci
copy($fullFilePath,APPLICATION_PATH . '/../public/extranet/images/icons/fff');
Dernière modification par croux89 (10-05-2012 16:25:44)
Hors ligne
il faut mettre le chemin complet avec le nom du fichier et l'extension
Hors ligne
bizarrement j'ai rajouté encore une fois un deuxième setdestination au file form et maintenant ça marche alors que j'ai fais la même chose avant de poster mon erreur et sa n'a pas marché
si sa peut aider quelqu'un
$file = new Zend_Form_Element_File('file'); $file->setLabel('Restaurant Image') ->setAttrib('enctype', 'multipart/form-data') ->setDestination(APPLICATION_PATH . '/../public/backoffice/images/icons/fff') ->setDestination(APPLICATION_PATH . '/../public/extranet/images/icons/fff') ->setRequired(false);
Dernière modification par croux89 (11-05-2012 10:47:34)
Hors ligne
C'est impossible ton truc. Le 2eme setDestination écrase le premier chez moi...
J'ai bien testé ce coup-ci...
Ma solution:
Form:
$file = new Zend_Form_Element_File('file'); $file->setLabel('Image') ->setAttrib('enctype', 'multipart/form-data') ->setDestination(APPLICATION_PATH . '/../public/img/upload/up1') ->setRequired(true); $this->addElement($file);
Action:
$form = new My_Form_Upload(); $this->view->form = $form; if ( $this->_request->isPost() ) { $formData = $this->_request->getPost(); if ( $form->isValid($formData) ) { if ( $form->file->receive() ) { $pathinfo = pathinfo($form->file->getFileName()); copy($pathinfo['dirname'] . DIRECTORY_SEPARATOR . $pathinfo['basename'],APPLICATION_PATH . '/../public/img/upload/up2' . DIRECTORY_SEPARATOR . $pathinfo['basename']); } } }
ça fonctionne comme ça...
Dernière modification par Roromix (11-05-2012 11:32:04)
Hors ligne
merci pour ta réponse effectivement ta solution fonctionne très bien , merci beaucoup Roromix pour ton aide
Hors ligne
Pages: 1