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 :

Passer un paramètre au construct de mon Form Class [3.x]


Sujet :

Symfony PHP

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    Points : 378
    Points
    378
    Par défaut Passer un paramètre au construct de mon Form Class
    Hello

    Avant sous sf2 je faisais ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $search_form = $this->createForm(new SearchType($em), $data, array(
                'action' => $this->generateUrl('document'),
                'method' => 'GET',
            ));
    Maintenant on doit faire ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $search_form = $this->createForm(SearchType::class, $data, array(
                'action' => $this->generateUrl('document'),
                'method' => 'GET',
            ));
    Dans la doc il disent de passer par un service (pas cool :-( )

    Donc j'ai fait ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    services:
        app.form.type.search:
            class: GenealogieBundle\Form\SearchType
            arguments: ["@doctrine.orm.entity_manager"]
            tags:
                - { name: form.type }
    Et puis dans mon controller ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            $search_form = $this->get('app.form.type.search');
    Mais ça plante :-(

    Attempted to call an undefined method named "handleRequest" of class "GenealogieBundle\Form\SearchType".
    Mon formulaire

    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
    36
    37
    38
    39
    40
     
    <?php
     
    class SearchType extends AbstractType
    {
     
        protected $em;
     
        function __construct(EntityManager $em)
        {
            $this->em = $em;
        }
     
        /**
         * @param FormBuilderInterface $builder
         * @param array $options
         */
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('name')
                ->add('commune')->add('submit', 'submit', array(
                    'label' => 'Rechercher',
                ))
                ->add('raz', 'submit', array(
                    'label' => 'raz.button',
                    'attr' => array('class' => 'btn-sm btn-success',
                        'title' => 'Search raz')));
        }
     
        /**
         * @param OptionsResolver $resolver
         */
        public function configureOptions(OptionsResolver $resolver)
        {
            $resolver->setDefaults(array(
                'data_class' => 'GenealogieBundle\Entity\Acte'
            ));
        }
    }
    Merci

  2. #2
    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 dois continuer d'instancier ton formulaire de cette façon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $search_form = $this->createForm(SearchType::class, $data, array(
                'action' => $this->generateUrl('document'),
                'method' => 'GET',
            ));
    tu peux aussi passer par les options pour injecter le service EntityManager
    http://www.developpez.net/forums/d15...ur-formulaire/

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    Points : 378
    Points
    378
    Par défaut
    Oui je sais bien qu'on peut passer par les options,

    mais j'ai tjs passé des paramètres par le construct

    je suppose que c'est tjs possible...

  4. #4
    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
    Précision:

    tu dois continuer d'instancier ton formulaire de cette façon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $search_form = $this->createForm(SearchType::class, $data, array(
    'action' => $this->generateUrl('document'),
    'method' => 'GET',
    ));
    et garder ta config
    services:
        app.form.type.search:
            class: GenealogieBundle\Form\SearchType
            arguments: ["@doctrine.orm.entity_manager"]
            tags:
                - { name: form.type }
    


    l'utilisation des options n'est qu'une suggestion.

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    Points : 378
    Points
    378
    Par défaut
    haaaaaaa

    j'avais pas compris

    Merci arnooo999

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

Discussions similaires

  1. [Singleton] Comment passer des paramètres lors de sa construction ?
    Par gege2061 dans le forum Design Patterns
    Réponses: 15
    Dernier message: 08/05/2009, 15h33
  2. Réponses: 5
    Dernier message: 04/05/2009, 23h47
  3. Instancier une form depuis une class passer en paramètre
    Par freud dans le forum Windows Forms
    Réponses: 9
    Dernier message: 07/11/2007, 15h26
  4. Passer un paramétre d'une forme a une autre
    Par Ari31 dans le forum C++/CLI
    Réponses: 4
    Dernier message: 04/07/2007, 01h04
  5. Réponses: 2
    Dernier message: 11/09/2006, 14h53

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