Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 09-05-2012 11:42:57

croux89
Membre
Date d'inscription: 20-04-2012
Messages: 72

ajout d'une nouvelle destination dans zend file

bonjour j'ai une question est ce qu'on peut affecter à un zend_file deux destination ??
par exemple mon zend file est comme ceci

   

Code:

  $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);
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

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

 

#2 09-05-2012 12:53:56

Roromix
Membre
Date d'inscription: 05-12-2011
Messages: 55

Re: ajout d'une nouvelle destination dans zend file

Je te conseil de faire ta déclaration d'element File comme ceci:

Code:

  $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);
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

et de redéfinir ton isValid():

Code:

    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;
    }
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

Je ne peux pas le tester dans l'immédiat mais en théorie ça devrait fonctionner...

Hors ligne

 

#3 09-05-2012 13:43:41

croux89
Membre
Date d'inscription: 20-04-2012
Messages: 72

Re: ajout d'une nouvelle destination dans zend file

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

 

#4 09-05-2012 14:26:55

Roromix
Membre
Date d'inscription: 05-12-2011
Messages: 55

Re: ajout d'une nouvelle destination dans zend file

Et ton file ne se trouve pas dans une classe qui étend Zend_Form ?
On peut avoir un peu plus de code ?

Hors ligne

 

#5 09-05-2012 19:27:10

croux89
Membre
Date d'inscription: 20-04-2012
Messages: 72

Re: ajout d'une nouvelle destination dans zend file

voila ma fonction insert

Code:

 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);
            }
        }
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

et voila mon formulaire

Code:

   $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);
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

je voudrais quand la fonction receive se declenche elle envoir le fichier dans deux destination en même temps

Hors ligne

 

#6 09-05-2012 21:34:03

Roromix
Membre
Date d'inscription: 05-12-2011
Messages: 55

Re: ajout d'une nouvelle destination dans zend file

Code:

 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);
            }
        }
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

Code:

   $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);
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

Voila...

Hors ligne

 

#7 10-05-2012 15:32:00

croux89
Membre
Date d'inscription: 20-04-2012
Messages: 72

Re: ajout d'une nouvelle destination dans zend file

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

 

#8 10-05-2012 15:45:20

Roromix
Membre
Date d'inscription: 05-12-2011
Messages: 55

Re: ajout d'une nouvelle destination dans zend file

Ou sinon, tout bêtement, tu copie le fichier:

copy('chemin A', 'chemin B');

Hors ligne

 

#9 10-05-2012 16:25:26

croux89
Membre
Date d'inscription: 20-04-2012
Messages: 72

Re: ajout d'une nouvelle destination dans zend file

ça ne marche pas peut être que je donne pas le chemin exacte j'ai fait comme ceci

Code:

 copy($fullFilePath,APPLICATION_PATH . '/../public/extranet/images/icons/fff');
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

Dernière modification par croux89 (10-05-2012 16:25:44)

Hors ligne

 

#10 11-05-2012 09:21:29

Roromix
Membre
Date d'inscription: 05-12-2011
Messages: 55

Re: ajout d'une nouvelle destination dans zend file

il faut mettre le chemin complet avec le nom du fichier et l'extension

Hors ligne

 

#11 11-05-2012 10:45:51

croux89
Membre
Date d'inscription: 20-04-2012
Messages: 72

Re: ajout d'une nouvelle destination dans zend file

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é big_smile
si sa peut aider quelqu'un

Code:

  $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);
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

Dernière modification par croux89 (11-05-2012 10:47:34)

Hors ligne

 

#12 11-05-2012 11:18:32

Roromix
Membre
Date d'inscription: 05-12-2011
Messages: 55

Re: ajout d'une nouvelle destination dans zend file

C'est impossible ton truc. Le 2eme setDestination écrase le premier chez moi...
J'ai bien testé ce coup-ci...

Ma solution:

Form:

Code:

        $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);
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

Action:

Code:

$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']);
                }
            }
        }
Ajoutez [lang=php|phtml|javascript|sql|perl|xml|shell|html] au début de votre code pour activer le syntax highlighting

ça fonctionne comme ça...

Dernière modification par Roromix (11-05-2012 11:32:04)

Hors ligne

 

#13 11-05-2012 11:40:22

croux89
Membre
Date d'inscription: 20-04-2012
Messages: 72

Re: ajout d'une nouvelle destination dans zend file

merci pour ta réponse effectivement ta solution fonctionne très bien , merci beaucoup Roromix pour ton aide

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages