IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

sfForm standalone - Upload file avec préfixe


Sujet :

Symfony PHP

  1. #1
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 397
    Points : 133
    Points
    133
    Par défaut sfForm standalone - Upload file avec préfixe
    Bonjour,

    J'utilise sfForm en standalone pour mes formulaires.

    Quand je n'utilise pas de préfixe à mes éléments de formulaires tel que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->widgetSchema->setNameFormat(self::PREFIX . '[%s]');
    J'arrive parfaitement à réaliser le binding et passer le fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $oFormFile->bind(array(), array('file' => $_FILES['file']));
    En revanche quand j'indique un préfixe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->widgetSchema->setNameFormat(self::PREFIX . '[%s]');
    Je ne parviens plus à "binder" mon fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $oFormFile->bind(array(), array('file' => $_FILES['myPrefix']['file']));
    or
    $oFormFile->bind(array(), array('file' => $_FILES['myPrefix']));
    J'ai pourtant essayer de ré-écrire le tableau FILES pour le fournir comme-ci il n'y avait pas eu de préfixe de déclarer mais sans plus de succès au binding.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        $file = array();
        if (isset($_FILES[Form::PREFIX]) == true) {
            foreach ($_FILES[Form::PREFIX] as $fileAttr => $aFile) {
                foreach ($aFile as $fileName => $fileValue)
                    $file[Form::PREFIX][$fileName][$fileAttr] = $fileValue;
            }
        }
     
    $oFormFile->bind(array(), array('file' => $file));
    Ma question, comment faire le bind du fichier lorsqu'on utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->widgetSchema->setNameFormat(self::PREFIX . '[%s]'); ?
    Merci,
    Dorian

  2. #2
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Est-ce que quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->form->bind($request->getParameter($this->form->getName()))
    pourrait t'aider ?
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  3. #3
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 397
    Points : 133
    Points
    133
    Par défaut
    Du tout je n'utilise par le framework Symfony mais juste les composants sfForm seul (standalone).

  4. #4
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    Pas un problème, il suffit d'adapter un peu le code.

    L'idée est de récupérer le nom du "NameFormat" du formulaire quel qu'il soit sans avoir à le connaître avec la fonction du formulaire "getName()"
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  5. #5
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    397
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 397
    Points : 133
    Points
    133
    Par défaut
    Je n'ai aucun soucis à réaliser le bind sur les données.

    Mon problème est uniquement lié aux FILES (upload) lorsque j'utilise $this->widgetSchema->setNameFormat, sans ça fonctionne également très bien (voir mon explication sur le 1er sujet).

  6. #6
    Membre averti Avatar de sacricri
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Points : 384
    Points
    384
    Par défaut
    Bonjour,

    As-tu essayé de faire un print_r($_FILES) afin de vérifier le format du tableau ?
    symfony power user !

  7. #7
    Membre actif
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 292
    Points
    292
    Par défaut
    Dans symfony le $request->getFiles ne fait pas que renvoyé le tableau $_FILES.

    Il le modifie pour avoir quelque chose d'utilisable, tu devrai regarder du coté du code de symfony (la méthode getFiles de la class sfWebRequest)

  8. #8
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Points : 8 486
    Points
    8 486
    Par défaut
    A ben oui, sfForm hors de symfony...

    bind ($taintedValues, $taintedFiles)
    $taintedValues An array of input values
    $taintedFiles An array of uploaded files (in the $_FILES or $_GET format)
    Mais cela tu l'as lu.

    En fait, ce qu'il faudrait faire c'est un bout de code en full symfony avec un ou plusieurs fichiers dans le code et de regarder ce qu'il met dans "$request->getFiles($form->getName())"

    Mais aujourd'hui pas vraiment le temps
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

Discussions similaires

  1. [2.x] Upload file avec etat d'avancement de l'upload
    Par snipemi dans le forum Symfony
    Réponses: 16
    Dernier message: 29/08/2011, 14h32
  2. upload file avec silverlight
    Par Etudiante_Ines dans le forum Silverlight
    Réponses: 5
    Dernier message: 24/05/2011, 00h26
  3. Réponses: 5
    Dernier message: 24/07/2010, 16h16
  4. Upload file avec web service (Axis 2)
    Par Leopardi dans le forum Services Web
    Réponses: 0
    Dernier message: 18/09/2008, 12h53
  5. Loader .X File avec Delphi
    Par Vivien/Epita dans le forum DirectX
    Réponses: 2
    Dernier message: 23/02/2005, 13h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo