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 :

Editer un formulaire avec un champ file [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Par défaut Editer un formulaire avec un champ file
    Bonjour,

    J'utilise un formulaire qui permet d'uploader un fichier. L'upload se passe bien. Mais si je retourne sur le formulaire, avec un identifiant existant (pour le modifier par exemple), tous les champs sont correctement pré-remplis, sauf le champ "file" qui est vide.

    Le formulaire

    • attachment1 est le nom de l'attribut persisté.
    • file1 correspond au champs input file


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        public function buildForm( FormBuilderInterface $builder, array $options )
        {
            $builder
                ->add( 'observations', 'textarea', array( 'required'=>false ) )
                ->add( 'attachment1', 'text', array( 'required'=>false ) )
                ->add( 'file1', 'file', array(
                        'required'   =>  false
                    ))
                ->getForm();
        }
    Entity
    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
    31
    32
    33
    34
    35
     
     
      /**
      * @ORM\Column(name="tic_attachment1_s", type="string", length=255, nullable=true)
      */
    	protected $attachment1;
    	protected $file1;
     
        /**
         * @ORM\PrePersist()
         * @ORM\PreUpdate()
         */
        public function preUpload()
        {
        	if (! is_null($this->file1)) {    		    	 
    	    	$this->attachment1 = 'uploads/tickets/'.$this->getId().'/'.$this->file1->getClientOriginalName();
        	}
        	return;
     
        }
     
        public function upload()
        {
        	if (! is_null($this->file1)) {
     
    	    	// On garde le nom original du fichier de l'internaute
    	    	$name = $this->file1->getClientOriginalName();
     
    	    	// On déplace le fichier envoyé dans le répertoire
    	    	$upload = __DIR__.'/../../../../web/uploads/tickets';
    	    	$this->file1->move($upload . '/' . $this->getId(), $name);
        	}
        	return;
     
        }
    Le contrôleur
    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
     
    		$oTicket = $this->getDoctrine()->getRepository( 'AhsTicketBundle:Ticket' )->findOneById( $id );
    		if ( !$oTicket ) throw $this->createNotFoundException( "Le ticket ".$id." n'existe pas" );
     
    		//Formulaires
    		$fTicket = $this->createForm( new TicketRendezVousType(), $oTicket );
     
    		$request = $this->getRequest();
     
    		if( $request->getMethod() == 'POST' ) {
    			$fTicket->bind( $request );
     
    			if( $fTicket->isValid() ) {
     
    				$oTicket->upload();
     
    				$em = $this->getDoctrine()->getManager();
    				$em->persist( $oTicket );	
    				$em->flush();
     
    				return $this->redirect( $this->generateUrl( ...) );
    			}
    		}
     
    		return $this->render( ... );
    Comment faire pour que l'attribut file1 ne soit pas vide lors de la seconde soumission.

    Merci pour votre aide,
    Gillou.

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Je connais pas Synphony, mais d'une manière générale je crois me souvenir que c'est impossible de faire cela avec php...
    C'est éventuellement possible de faire cela avec javascript et une lib comme jquery mais pas garanti que cela fonctionne avec tous les navigateurs.

  3. #3
    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

  4. #4
    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
    fausse manip à effacer par modérateur

  5. #5
    Membre chevronné Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Par défaut
    C'est parfait, merci

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 22/10/2008, 09h19
  2. formulaire avec des champs multiples
    Par don'de dans le forum Struts 1
    Réponses: 13
    Dernier message: 16/02/2007, 09h42
  3. formulaire avec input type="file"
    Par Naksh-i dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 24/10/2006, 08h51
  4. Réponses: 6
    Dernier message: 16/10/2006, 09h37
  5. Formulaire avec n champs
    Par Msieurduss dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/06/2006, 20h20

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