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 :

comment récupérer le nom réel d'un fichier uploadé via sfValidatorFile ?


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 58
    Points : 42
    Points
    42
    Par défaut comment récupérer le nom réel d'un fichier uploadé via sfValidatorFile ?
    Bonjour,
    Voilà mon soucis : j'aimerais garder le "nom unique" donné par symfony au fichier uploadé (hash du nom réel) dans le système de fichier (fonctionnement par défaut), pour éviter les collisions. Mais j'aimerais aussi stocker le nom réel du fichier dans un autre champ de mon model pour un affichage lisible à l'humain.

    J'imagine que je dois faire ca dans une méthode doSave de mon <model>Form.class.php, mais je ne sais pas du tout comment procéder ...

    D'avance, merci pour votre aide.

    <model>Form.class.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public function configure()
      {
        //...
        unset($this['name_file_re']); // champs accueillant le nom réel du fichier
     
        $this->setWidget('file_re', new sfWidgetFormInputFile());
        $this->setValidator('file_re', new sfValidatorFile(array(
          'required'   => false,
          'path'       => sfConfig::get('sf_upload_dir').'/files_re',
        )));
      }

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

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

    Tout se passe dans sfValidatorFile.class.php et dans sfValidatedFile.class.php.

    sfValidatedFile propose un certain nombre de méthodes utiles : generateFilename(), getOriginalName() ou encore getTempName().

    C'est la méthode doClean($value) qui construit la classe sfValidatedFile, à toi de voir comment l'utiliser, je ne l'ai jamais fait mais ça me semble faisable.

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Points : 384
    Points
    384
    Par défaut
    Ha ben je viens de tomber sur un lien intéressant pour toi : http://clear-cache.fr/?post/2010/04/...fValidatedFile

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 58
    Points : 42
    Points
    42
    Par défaut
    Merci pour le lien, ca m'aidera beaucoup pour la suite

    Sinon j'ai trouvé ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $form->getValue('file_re')->getOriginalName()
    Mais comment dire au formulaire qu'il faut que je mette cette variable dans 'name_file_re' ? sachant qu'il n'existe pas de méthode setValue dans sfForm

  5. #5
    Invité
    Invité(e)
    Par défaut
    En même temps je vois dans ton configure que tu fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unset($this['name_file_re']);
    Donc forcément ça va être un peu dur de mettre quelque chose dedans s'il n'existe pas. Mais sinon je crois que ça serait quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $form['name_file_re']->setDefault($value);

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 58
    Points : 42
    Points
    42
    Par défaut
    setDefault ne fonctionnera pas, vu que j'ai le nom du fichier "après" la validation du formulaire.

    Dans le fichier action.class.php j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $myModel = $form->save();
    Ya pas moyen de récupérer l'objet du formulaire AVANT de le sauvegarder ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 58
    Points : 42
    Points
    42
    Par défaut
    UP

    Est-ce possible de récupérer l'objet du formulaire AVANT de le sauvegarder ?

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

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

    Est-ce possible de récupérer l'objet du formulaire AVANT de le sauvegarder ?
    Bien sûr que c'est possible.

    Normalement, tu peux récupérer l'objet juste avant la sauvegarde
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $object = $form->getObject();
    $myModel = $form->save();
    Mais selon ce que tu souhaites faire, tu devrais travailler avec les méthodes des formulaires :
    http://www.amicalement-web.net/symfo...ppement+web%29

Discussions similaires

  1. Comment récupérer le nom du fichier sans l'extension ?
    Par altahir007 dans le forum Langage
    Réponses: 16
    Dernier message: 13/11/2009, 14h20
  2. [Path] Comment récupérer le nom du fichier?
    Par Sunsawe dans le forum Boost
    Réponses: 4
    Dernier message: 08/07/2008, 01h48
  3. Réponses: 3
    Dernier message: 30/01/2006, 17h24
  4. ShellListView : comment récupérer les noms des fichiers?
    Par Lolo1988 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 12/12/2005, 00h19
  5. Comment récupérer le nom du fichier sans le chemin ?
    Par st0nky dans le forum Débuter
    Réponses: 3
    Dernier message: 08/12/2005, 12h01

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