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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    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 é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,

    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 éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    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 é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
    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 éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    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