Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework
Zend Framework Forum d'entraide sur la programmation PHP avec Zend Framework. Avant de poster -> FAQ ZF, Cours ZF
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/08/2011, 23h28   #1
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 77
Points : 77
Par défaut comment renommer des fichier avec setmultiFile(4)

Bonsoir, j'ai enfin réussi à renommer mes fichiers uploader à la voler

Code :
1
2
3
4
5
6
7
8
 
$monimage = new Zend_Form_Element_File('image');
$monimage -> setLabel("télécharger une image");
                 ->setDestination('path');
$nom_fichier->uploader->$monimage->getFileInfo();
$nouveau_nom->"miniature".$nom_fichier['image']['name'];
$monimage->addFilter('Rename',$nouveau_nom);
$this->addElement($monimage,'image');
après des jours de sueurs à la lecture de la doc et des test intempestif j'ai pu renomer le fichier télécharger avant de l'envoyer au controller, et de l'enregister dans le bon endroit, j'ai une question simple (enfin je crois )

comment effectuer cette tâche avec plusieurs upload on va dire 4 par exemple.

j'ai cette solution de répéter avec une boucle 4 fois le formulaire , en mettant évidemment 4 indices (que je n'ai pas testé, pour le moment je souhaite trouver la meilleur solution afin d'obtimiser mon temps)
Code :
1
2
3
4
5
6
7
8
9
10
11
 
for ($i=0; $i <4;$i++)
{
$monimage[$i] = new Zend_Form_Element_File('image');
$monimage[$i] -> setLabel("télécharger une image[$i]");
                 ->setDestination('path');
$nom_fichier[$i->uploader->$monimage->getFileInfo();
$nouveau_nom[$i]->"miniature".$nom_fichier['image']['name'];
$monimage[$i]->addFilter('Rename',$nouveau_nom);
$this->addElement($monimage,'image');
}
ou j'ai vu que Zend a gentilement concocter une methode qui permet de faire 4 chose d'affiller:
Code :
1
2
3
4
5
6
7
8
9
 
$monimage = new Zend_Form_Element_File('image');
$monimage -> setLabel("télécharger une image");
                 ->setDestination('path');
$nom_fichier->uploader->$monimage->getFileInfo();
$nouveau_nom->"miniature".$nom_fichier['image']['name'];
$monimage->addFilter('Rename',$nouveau_nom);
$monimage->setMultiFile(4);
$this->addElement($monimage,'image');
comment je m'y prend pour renommer les 4 nom de fichier images ??
dans la doc sur la partie ou il explique le setMultiFile(), il n'y a pas beaucoup d'explication

voici la page en question:
http://framework.zend.com/manual/fr/...dElements.html

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
Exemple #4 Définir plusieurs fichiers
 
Créer un élément multifichier est identique à la création d'un élément unique. Appellez simplement setMultiFile() après que l'élément soit créé:
 
    $element = new Zend_Form_Element_File('foo');
    $element->setLabel('Uploadez une image:')
            ->setDestination('/var/www/upload');
    // s'assure qu'il y a un fichier au minimum, 3 au maximum
    $element->addValidator('Count', false, array('min' => 1, 'max' => 3));
    // Limite à 100K
    $element->addValidator('Size', false, 102400);
    // seulement des JPEG, PNG, et des GIF
    $element->addValidator('Extension', false, 'jpg,png,gif');
    // définit 3 éléments fichiers identiques
    $element->setMultiFile(3);
    $form->addElement($element, 'foo');
 
Vous avez maintenant 3 éléments d'upload de fichier identiques avec les mêmes paramètres. Pour obtenir le nombre de fichiers multiples défini, appellez simplement getMultiFile().
j'ai essayer un tous petit est en ajoutant avant
Code :
1
2
 
        $this->addElement($upl_big, 'image');
le fameu rename
Code :
1
2
 
       $monimage->addFilter('Rename','test');
j'avais épérer d'avoir 4 fois le nom du fichier test, mais j'ai une belle erreur
Code :
1
2
3
 
 
Fatal error: Call to a member function addFilter() on a non-object in
d'un autre côté, c'est peut être normal puisque c'est un array, il a du ne pas savoir quel fichier renomer parmis les 4, j'aurai bien mis un $i quelque par mais ou? ou faire avencer une incrémentation? je ne pense pas que je suis le seul à tomber sur ce problème qui est peut être pour vous facile a résoudre.

si vous avez d'autre document qui développe multiple je suis toute oui

avant de réponde à ma question, dit moi si vous l'avez compris ??

je vous remercie d'avance d'avoir pris la penne de la lecture de ma question?
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 04/08/2011, 16h00   #2
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Pour ma part je ne comprends pas à quoi peux bien te servir addFilter pourquoi tout n'est pas gérer au niveau des validateurs ?
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 21h38   #3
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 77
Points : 77
merci de ta réponse, je vais donc essayer d'utiliser les validateurs, si j'utilise celui ci pour detecter si j'ai uploader ou pas une image ??
Code :
1
2
3
4
5
6
7
8
9
10
11
 
       $name_file="";
$upload_file = new Zend_Validate_StringLength(array('min' =>1));
 
if (!$upload_file->isValid($name_file)) {
    echo "on n'a pas uploader une image";
}
else
{
    echo "on sauvegarde le nom de l'image";
}
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 04/08/2011, 22h37   #4
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Il sert a rien pour l upload car c est pour verifier qu une chaine de caractere a au moins un caractere
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 23h20   #5
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 77
Points : 77
j'ai donc utiliser une mauvaise methode ? car je me suis dis que lorsqu'on télécharge pas une image, la zone de saisie et vide? donc s'il y au moin 1 caractère c'est qu'on a télécharger quelque chose.

et je met à la place de isValide, isUploaded() ?
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 05/08/2011, 00h07   #6
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Si tu ajoute setRequired a ton element ça suffit pour verifier qu un fichier a ete passé
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 10h01   #7
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 77
Points : 77
j'ai rajouter
Code :
1
2
3
4
5
 
        $upl_big->setRequired('true');
        $upl_big->setMultiFile(4);
 
        $this->addElement($upl_big, 'upload_big');
Ais-je utilisers la methode "setRequirede" correctement et passé l'élément true correctement.

en faisant ceci problème de ma conception de mon forumulaire

Code :
1
2
 
il y a 4 fichier à uploader, l'uploader n'est pas obligé d'uploader les 4 images, il peut soit en télécharger de 1 à 4; si j'en met 2, il va me sortie qu'il faudra uploader les 4
de plus
j'avais mis
Code :
1
2
 
        $upl_big->addValidator('Count', false, array('min' => 1, 'max' => 4));
ce validateur va exiger au minimum 1 à 4 .

la methode setRequired sert exige bien qu'on uploader le fichier? ou je n'ai pas compris le fonctionnement de cette methode setRequired?
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 05/08/2011, 10h14   #8
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
setRequired indique qu'il faut que l'élément du formulaire ne soit pas vide, si cela ne te vas pas essaye de voir avec le validateur count comme tu l'a indiqué, je ne l'ai jamais utilisé, je créé mes propres décorateurs quand le comportement n'est pas gérer par zend ou si ce dernier est compliqué
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2011, 08h57   #9
Membre régulier
 
Inscription : août 2008
Messages : 402
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 402
Points : 77
Points : 77
je vais reesayer de compter le nombre d'upload.

sur ce lien
http://framework.zend.com/manual/fr/...dElements.html

ne comprend bien sur cette phrase.

Code :
1
2
 
Cela dit, parfois vous aurez besoin d'appeller getValues() sans recevoir le fichier. Vous pouvez l'archiver en appellant setValueDisabled(true). Afin de recevoir la véritable valeur de ce flag vous pouvez appeller isValueDisabled().
pourquoi mettons setValueDisable à true ?? pour empêcher si on est dans le controlleur de piocher ce qu'il y a dans getValue ??

ent getValue() on peut l'appeller uniquement au controller ou on peut l'appeller aussi d'un fichier form.php dans le repertoire" form"
keokaz est déconnecté   Envoyer un message privé Réponse avec citation 01
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h24.


 
 
 
 
Partenaires

Hébergement Web