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 passer des infos à un formulaire?


Sujet :

Symfony PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2013
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 34
    Points : 33
    Points
    33
    Par défaut Comment passer des infos à un formulaire?
    Bonjour,

    J'explique mon problème.

    Je veux séléctionner des images d'un film.
    J'ai donc récupéré les images d'un film sur allociné et je les ai stocké dans un tableau dans mon controller.

    Ma question est comment passer la liste des images au formulaire?

    ps: En fonction du film choisi la liste des images est différente.

    Cordialement

  2. #2
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    un formulaire est composé de champs input( text, textarea, radio, check,...)

    ton tableau tu le passe dans la requete du controleur.
    la page twig recupere ce tableau d'image.


    dans ton twig, tu fais correspondre une image à un radio bouton par exemple.
    tu sais que si c'est le 1er radio button qui a été selectionné donc c'est la 1ere image.

    c'est bien ça ce que tu cherche ?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2013
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 34
    Points : 33
    Points
    33
    Par défaut
    Oui c'est ce que je recherche.

    Pas de problème pour la partie twig.

    C'est juste comment passer un array au formulaire dans le controlleur?
    Auriez vous un exemple?
    Je n'ai pas trouvé dans le doc symfony2 comment faire cela.

    Actuellement j'utilise ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $form = $this->createForm(new InformationsType(), $informations);
    Avec $informations mon entité.


    par exemple mon array à passer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array('http://www.test.com/image1.jpg', 'http://www.test.com/image1.jpg');
    Je compte afficher la liste sous forme de checkbox.





    Dans mon informationType.php pour mon formulaire j'ai ceci (pour un select par exemple):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class InformationsType extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('age_recommande', 'choice', array(
                        'choices' => array('Tout Public' => 'Tout Public', 'Interdit aux moins de 10 ans' => 'Interdit aux moins de 10 ans', 'Interdit aux moins de 12 ans' => 'Interdit aux moins de 12 ans', 'Interdit aux moins de 16 ans' => 'Interdit aux moins de 16 ans', 'Interdit aux moins de 18 ans' => 'Interdit aux moins de 18 ans', 'Porno - Charme' => 'Porno - Charme'),
                        'multiple'  => false,
                        'expanded' => false,
                        'empty_value' => 'Veuillez choisir',
                        'required' => false
                ))
    Mais la les champs sont écrit et ne sont pas dynamiques (ils ne peuvent pas changer).

  4. #4
    Membre habitué

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 7
    Points : 138
    Points
    138
    Par défaut
    Bonsoir,

    Pour passer des informations au formulaire il est possible de passer par le constructeur. Par exemple, si on veut avoir une liste déroulante dynamique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public function __construct($data)
    {
        $this->choiceData = $data;
    }
    Ensuite dans le buildForm :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        //...
        $builder->add('my_field', 'choice', array('choices' => $this->choiceData));
        //...
    }
    Et le controlleur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $choices = array();
    // on construit choices
    $form = $this->createForm(new InformationsType($choices), $informations);

  5. #5
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    copntrolleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    $montableau = array('http://www.test.com/image1.jpg', 'http://www.test.com/image1.jpg');
    ...
    return $this->render( 'AcmeProjetBundle:ProjetControlleur:mapage.html.twig', array( 'form' => $form->createView(), 'montableau'=>$montableau, ));

    page twig :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
    <img src='{{ montableau[0] }}' ...
    {{ form_widget(form.radio1..) }}  
    ...
    <img src='{{ montableau[1] }}' ...
    {{ form_widget(form.radio2..) }}

    à toi de voir dans les tutos comment on affiche un radio button dans un groupe.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juin 2013
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 34
    Points : 33
    Points
    33
    Par défaut
    Merci de votre aide.

    Il fallait donc le mettre en paramètre de mon formulaire (dans le new InformationType()).



    @dukoid: Pas la peine de passer le tableau à twig.

    Tu peux directement récupérer les informations du formulaire dans twig avec un truc du genre:

    Tu fais un dump(form) et tu verra toutes les informations.

  7. #7
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    merci blood pour cette precision, je ne le savais pas

Discussions similaires

  1. [script SQL]comment passer des parametres a un scrip sql?
    Par la7su dans le forum Langage SQL
    Réponses: 5
    Dernier message: 23/03/2005, 10h55
  2. Réponses: 7
    Dernier message: 30/12/2004, 12h01
  3. Réponses: 2
    Dernier message: 19/01/2004, 12h19
  4. [CR7][VB6] Passer des infos de Vb vers CR
    Par tripper.dim dans le forum SDK
    Réponses: 2
    Dernier message: 13/11/2003, 13h30

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