Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 31-08-2009 14:47:08

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

[1.8][Zend_Form] Récupérer dans le form le fichier déjà uploadé

Bonjour, je sais que plusieurs personnes utilisent des scripts d'upload pour transmettre des fichiers sur le serveur. Pour moi c'est déjà fait mais il y a quelque chose qui se corse un peu.

Si dans mon formulaire, par exemple "Mon profil incluant mon image de profil", j'ai déjà uploader une image. Et que par la suite, je veux retourner modifier une information dans le même formulaire, on réaffiche les donnés avec populate().

-->Le problème, on ne peut pas inscrire du contenu dans le champs de l'upload, il faut donc afficher le nom du fichier quelque part...Bien sûr, je peux faire une requête qui va vérifier si le nom existe et de l'afficher mais, et la question est donc plustôt graphique, je veux que ce nom se situe tout juste à côté de mon champs upload, c'est-à-dire à intégrer à mon formulaire:

Code:

$image = new Zend_Form_Element_File('imgGalleries');
$image->setLabel('Image de la gallerie:')
                    ->setDestination($_SERVER['DOCUMENT_ROOT'].'/upload/images')
                    // ensure only 1 file
                    ->addValidator('Count', false, 1)
                    // limit to 
                    ->addValidator('Size', false, 20971520)
                    ->addValidator('Extension', false, 'jpg,gif,png');    

echo "nom du fichier" <---- Apparait à la toute fin !!

Problème, si l'on insère du code dans le formulaire, celui-ci va apparaître à la toute fin ! Je me suis dit, solution, Zend_Decorator, mais encore là, il faudrait que je trouve un moyen de faire passer le nom en paramètre aux Decorator...

Bref, c'est complexe et j'aimerais bien connaître les techniques que vous avez utilisez !

Merci !

Hors ligne

 

#2 01-09-2009 16:32:00

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [1.8][Zend_Form] Récupérer dans le form le fichier déjà uploadé

Allez Hop Up !

Hors ligne

 

#3 01-09-2009 17:51:05

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [1.8][Zend_Form] Récupérer dans le form le fichier déjà uploadé

J'ai trouvé une solution fonctionnelle. Il y a en surement une meilleure mais je vais mettre ma solution en ligne pour les autres qui voudraient une fonctionnalité du genre.

D'abord, je récupère le nom de l'image à partir de la base de donnés directement dans mon Zend_form:

Code:

...
$galleries = new Default_Model_DbTable_Galleries();
$galleries = $galleries->fetchRow('idGalleries='.$options); //Récupère le champs de la BD

$name= $galleries['imgGalleries'];
$name1= explode ("images/", $name); // Je coupe le path jusqu'à "images/"
$name1= str_replace("\\",'/',$name1); // Je remplace mes slashs (je sais même plus si c'est utile)

if(!isset($name1[1])){  //Important, si le ma variable n'est pas setté, je m'assure qu'elle soit juste vide mais créé.
    $name1[1]='';    //$name1[1] car c'est un array suite au explode, je veux la 2e partie seulement
}

$image = new Zend_Form_Element_File('imgGalleries');
$image->setLabel('Image de la gallerie')
    ->setDestination($_SERVER['DOCUMENT_ROOT'].'/upload/images')
    // ensure only 1 file
    ->addValidator('Count', false, 1)
    // limit to 
    ->addValidator('Size', false, 20971520)
    //->setMaxFileSize(8388608)
    >addValidator('Extension', false, 'jpg,gif,png')
    ->setDescription($name1[1])
    ->setDecorators(array('Upload'));

...

Et puis dans mon decorator perso pour mon file upload, j'ai ceci:

Code:

class Default_Form_Decorator_Upload extends Zend_Form_Decorator_File

...

 public function buildDescription()
    {
        $element = $this->getElement();
        $desc    = $element->getDescription();
        if (empty($desc)) {
            return '<div class="description">Aucune image d\'enregistré</div>';
        }
        return '<div class="description">Le nom de l\'image enregistré est: <i><b>' . $desc . '</b></i></div>';
    }

...

Comme vous avez remarquer, j'utilise la description de mon élément pour y afficher le nom du fichier, s'il n'y a pas de fichier, j'indique qu'aucune image n'est enregistré. Je pense qu'avec tout ce code, vous pouvez comprendre le reste.

Hors ligne

 

#4 01-09-2009 17:54:22

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [1.8][Zend_Form] Récupérer dans le form le fichier déjà uploadé

Ha oui, j'aimerais savoir s'il y a un autre moyen d'envoyés des paramètres à mon decorator puisque maintenant, je souhaites améliorer le tout.

J'aimerais envoyé non seulement le nom du fichier, mais son path complet au decorator.
Je dois donc procéder d'une autre façon, avec les options peut-être ?

Ce que je veux faire pourrait être le over du nom de l'image fait affiché une bulle contenant cette même image.

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