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 :

Formulaire avec fichier lors de la modification [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Par défaut Formulaire avec fichier lors de la modification
    Bonjour à tous,

    Je propose à mes utilisateurs un formulaire où ils peuvent uploader un fichier et saisir d'autres champs.
    Tout fonctionne correctement lors de la création. Enregistrement en BD, sauvegarde du fichier.

    Par contre, quand l'utilisateur édite le même formulaire, toutes les valeurs sont pré-remplies (avec les valeurs BD) sauf... le fichier !
    Evidemment, que se passe-t-il alors :
    - soit il ne peut valider le formulaire si j'ai mis l'attribut "Fichier" à required
    - soit il écrase le fichier avec la valeur vide en BD si j'autorise

    J'aimerais que lorsque l'utilisateur édite son formulaire, le champ fichier soit prérempli comme les autres.
    Symfony2 le fait tout seul ou je dois coder à la main ?

    Merci pour votre aide

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Par défaut
    Bonjour,
    un input de type file pemet d'uploader un fichier situé sur le client vers le serveur.
    en affichant un formulaire de modification, tu ne peut pas préremplir ce champ avec la localisation du fichier sur le client (d'ailleurs ce fichier n'existe pas forcément sur le poste client).
    ajoute + tôt un lien pour télécharger le fichier à coté du champ file, afin que l'utilisateur sache si un fichier est déjà présent

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Par défaut
    Merci pour ta réponse
    C'est vrai que je veux utiliser le même formulaire en création et en modification et le fichier est obligatoire. Il pourrait tout de même repérer que l'objet 'Entity' a l'attribut "Fichier" déjà rempli.

    Si j'ai bien compris, ce n'est donc pas géré par Symfony. Je vais le faire à la main ?

  4. #4
    Membre confirmé Avatar de flutz
    Homme Profil pro
    Ingénieur d'études et développement
    Inscrit en
    Juin 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur d'études et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 52
    Par défaut
    Ce n'est pas de la faute de Symfony, c'est une constante du web
    Tu pourras travailler dans d'autres langages t'auras le même soucis, donc oui il faut que tu fasses un truc à la main autre que remplir ce champ.

  5. #5
    Membre émérite
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Par défaut
    En fait il s'agit avant tout d'un problème de validation.
    Remplir systèmatiquement le champ file de ton entité en chargeant un fichier en mémoire sera trop lourd.
    Néammoins un bundle tel que https://github.com/dustin10/VichUplo...s/doc/index.md permet dans ses options de faire cela.

    Le mieux serait de traiter au niveau de tes validateurs.
    Je suppose que tu as un Assert\NotNull sur le champ File et que cette contrainte est appelé que ce soit en création ou en modification.

    tu pourrais remplacer cette contrainte
    - par une contrainte callback (http://symfony.com/doc/current/refer.../Callback.html)
    - ou bien utiliser les validation groups (http://symfony.com/doc/current/book/...idation-groups) (tu aurais un ensemble de contrainte appelé toujours + un groupe de validation "creation" avec cette contrainte NotNull sur File)
    Dans ce cas il faudrait enlever la validation html5 "required" et ne traiter cette validation que coté serveur.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Par défaut
    Merci Arno pour ta réponse.
    Le problème est-il que "Validateur" ?

    Admettons que j'arrive à mettre un validateur "not null" sur la création et à l'enlever lors de la modification.
    L'autre problème est que lors de la modification, si l'utilisateur ne charge pas un nouveau fichier (c.a.d qu'il laisse le premier uploadé), la request bindée au form va mettre vide ou null dans l'attribut "fichier" de mon objet

  7. #7
    Membre émérite
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Par défaut
    en se reférant à la doc sur l'upload avec Symfony et doctrine
    http://symfony.com/doc/2.0/cookbook/...e_uploads.html
    Il n'y a upload et remplissage du champ "path" que si le champ "file" est rempli.
    Le champ "path" (qui est persité dans la BDD) n'est donc pas affecté si le champ file est vide.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Par défaut
    Merci Arno
    Bravo, j'avais lu la doc en diagonale pensant faire pareil

    La différence ? L'attribut "file" était une colonne de mon entité. Il faut donc un attribut "file" mais aussi un autre attribut non mappé à doctrine sur lequel on fait les opérations upload, etc.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Par défaut
    Ah oui, par contre, le Assert NotBlank est mortel
    Je retombe dans le même problème :
    Lors de la création, cela fonctionne
    Lors de la modification de l'entité sans toucher le fichier, ça bloque
    Heureusement, si j'enlève le Assert, cela ne met plus le fichier à Null, c'est déjà ça :p

    Une partie du problème est encore la

    J'arrive à faire le FORM un "if isCreation alors required=true", ça c'est pour le contrôle côté client.

    Mais pour le contrôle côté serveur ?

  10. #10
    Membre émérite
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Par défaut
    tu pourrais remplacer cette contrainte
    - par une contrainte callback (http://symfony.com/doc/current/refer.../Callback.html)
    - ou bien utiliser les validation groups (http://symfony.com/doc/current/book/...idation-groups) (tu aurais un ensemble de contrainte appelé toujours + un groupe de validation "creation" avec cette contrainte NotNull sur File)

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 33
    Par défaut
    C'est génial, cela fonctionne avec les "validation groups", merci beaucoup Arno

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Remplir contenu formulaire avec fichier txt
    Par Invité dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 14/04/2013, 21h01
  2. formulaire avec fichier excel
    Par sylv20 dans le forum IHM
    Réponses: 3
    Dernier message: 01/07/2011, 03h42
  3. [ZF 1.11] Formulaire avec fichier - 2 files alors que déclaré 1
    Par Paul75 dans le forum Zend_Form
    Réponses: 4
    Dernier message: 23/06/2011, 10h19
  4. [Upload] Insérer un formulaire avec envoi de fichier.
    Par simplyme dans le forum Langage
    Réponses: 7
    Dernier message: 13/06/2007, 11h22
  5. Réponses: 8
    Dernier message: 04/09/2006, 17h34

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