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 :

Affecter une valeur à un type File


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 184
    Points : 46
    Points
    46
    Par défaut Affecter une valeur à un type File
    Bonsoir,

    J'aimerais savoir si c'est possible d'affecter une valeur à un type File.
    C'est à dire que j'ai un input File qui me permet de télécharger une image.
    Or j'ai une page qui permet de modifier l'image et je n'arrive pas à mettre dans l'input File la valeur de l'image courante.

    Comment je peux faire ??

    Merci.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Dans le but de renvoyer l'image via un formulaire ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 184
    Points : 46
    Points
    46
    Par défaut
    C'est juste pour écrire le nom de l'image dans ma base de donnée.
    Mais une méthode copie l'image dans un dossier déterminée. C'est pour sa j'ai juste besoin du nom de l'image.

    Mais je veux juste savoir comment on fait pour assigner une chaine dans un type file.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Je ne pense pas que tu puisses.

    Cependant sur ta page qui te permet de modifier l'image tu peux toujours passer par un champs caché par exemple si tu as besoin de connaitre le nom de l'image courante.

    Et ta méthode d'update ne serait appelé que si le champs file est renseigné.

    J'espère avoir bien compris ton problème

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 184
    Points : 46
    Points
    46
    Par défaut
    Le soucis c'est que dans la classe de mon entité j'ai mis que le champ de type File ne peut être vide..

    Du coup, je dois retiré cette condition ?? Parce que sinon je ne peux pas il faut que je trouve autre chose..

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Si ta page permet de a l'internaute de modifier l'image courante,

    soit tu laisses ton champs dans ton entité en obligatoire et dans ce cas l'internaute n'a d'autre choix que d'en choisir une nouvelle ou d'annuler

    Soit tu retires le caractère obligatoire et dans ce cas tu tests ton champ en php directement

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 184
    Points : 46
    Points
    46
    Par défaut
    Ok merci pour ta réponse, mais je dois trouver une autre manière car sur la page il y a plusieurs variable qu'on peut changer..

    Et je peux pas retirer la contrainte vide, je vais voir merci.

    Je me demande si on peut pas faire quelque chose du genre :

    {{ form_widget(form.image | path ....) }}

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Je t'en prie.

    Par contre pour ton dernier point. Je ne pense vraiment pas. Le type file attend vraiment
    le path d'un fichier physique sur la machine de l'internaute.

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour,
    Tu peux utiliser les validation groups:
    http://symfony.com/doc/2.0/book/vali...idation-groups

    si ton formulaire est en création tu aurais un validation groups ou le champ "file" est obligatoire, pour la modification, tu utiliserais un autre validation groups ou ce champ serait optionnel

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 184
    Points : 46
    Points
    46
    Par défaut
    OK merci !! je pense que c'est sa qu'il me faut.

    par contre je ne comprend pas trop ou il faut que je modifie mon code

    controller.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
        public function modifierAction($id)
        {
    		$repository = $this->getDoctrine()->getManager()->getRepository('MeteoApplisAdminBundle:ConfIndicateurs');
     
    		$indicateur = $repository->find($id);
     
    		$form = $this->createForm(new ConfIndicateursType, $indicateur);
     
    		$request = $this->get('request');
     
    		if($request->getMethod() == 'POST')
    		{
    			$form->bind($request);
     
    			if($form->isValid())
    			{
    				$em = $this->getDoctrine()->getEntityManager();
    				$em->persist($indicateur);
    				$em->flush();
     
    				return $this->redirect($this->generateUrl('meteo_applis_admin_indicateurs'));
    			}
    		}
     
            return $this->render('MeteoApplisAdminBundle:Admin:Indicateurs/indicateurs_modifier.html.twig', array(
    			'indicateur' => $indicateur,
    			'form' => $form->createView(),
    		));
        }
    formulaire.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    class ConfIndicateursType extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('etat')
    			->add('image')
            ;
        }
     
        public function setDefaultOptions(OptionsResolverInterface $resolver)
        {
            $resolver->setDefaults(array(
                'data_class' => 'MeteoApplis\AdminBundle\Entity\ConfIndicateurs'
            ));
        }
    }
    Tu pourrais m'aider ??

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Tu configures tes validations groups au niveau de test annotations.
    http://symfony.com/doc/2.0/book/vali...idation-groups
    par défaut lorsque l'on ne précise, rien ces contraintes se trouvent dans le groupe de validation "Default"
    Il faudrait que tu ajoute sur ton champ file
    /**
    * Assert\File
    * Assert\NotNull(groups={groups={"Creation"}})
    * /
    protected $file;
    Donc en mode création un utilise "Default" et "Creation", en mode modification uniquement "Default"

    Pour passer tes groupes de validation au formulaire tu dois pouvoir faire comme cela ( NB: cela ne concernera que ton action "creerAction", pour ton action "modifierAction", c'est le groupe Default qui est utilisé).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $form = $this->createForm(new ConfIndicateursType, null, array('validation_groups'=>array('Default','Creation');
    voir ici pour les formulaires et les validations_groups
    http://symfony.com/doc/2.0/book/form...idation-groups

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 184
    Points : 46
    Points
    46
    Par défaut
    Super, sa marche très bien !

    En tout cas merci ^^

Discussions similaires

  1. Récupérer une valeur input type file
    Par nal dans le forum Langage
    Réponses: 1
    Dernier message: 23/04/2012, 12h58
  2. Réponses: 3
    Dernier message: 10/06/2009, 22h03
  3. Affecter une valeur par defaut a la balise file
    Par mego dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 24/07/2006, 18h24
  4. Affecter une valeur à un input type="file" ?
    Par rocs dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 18/08/2005, 11h10
  5. Affecter une valeur à un input type text
    Par mr.t dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 01/06/2005, 15h18

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