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);

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);

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;
    }

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);
            }
        }

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);

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);
            }
        }

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);

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');

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);

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);

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']);
                }
            }
        }

ç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