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 :

[Form] Externalisation des formulaires [2.x]


Sujet :

Symfony PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 37
    Points : 31
    Points
    31
    Par défaut [Form] Externalisation des formulaires
    Bonjour,

    Je m'initie à Symfony2 et je me retrouve un peu bloqué au niveau de l'externalisation des formulaires. J'essaie de réaliser une application de gestion de films, tout ce qu'il y a de plus banal donc.

    Je souhaite donc créer un formulaire pour ajouter des catégories. Lorsque je fais ceci:

    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
    <?php
        public function addAction()
        {
            $cat = new Category();
     
            $formBuilder = $this->createFormBuilder($cat);
            $formBuilder->add('title', 'text');
     
            $form = $formBuilder->getForm();
     
            return $this->render('CedevMediamanagerBundle:Category:edit.html.twig', array
                    (
                        'form' => $form->createView()
                    )
            );
        }
    ?>
    Pas de problème le formulaire s'affiche correctement.

    En revanche si je fais cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $cat = new Category();
    $form = $this->createForm($cat, new CategoryType());
     
    return $this->render('CedevMediamanagerBundle:Category:edit.html.twig', array
    (
                        'form' => $form->createView()
    )
    );
    ?>
    Je récupère une exception: "Expected argument of type "string, Symfony\Component\Form\ResolvedFormTypeInterface or Symfony\Component\Form\FormTypeInterface", "Cedev\MediamanagerBundle\Entity\Category given".

    Au cas où voici le code CategoryType généré par la console:

    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
    <?php
    class CategoryType extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder
                ->add('title', 'text')
            ;
        }
     
        public function setDefaultOptions(OptionsResolverInterface $resolver)
        {
            $resolver->setDefaults(array(
                'data_class' => 'Cedev\MediamanagerBundle\Entity\Category'
            ));
        }
     
        public function getName()
        {
            return 'cedev_mediamanagerbundle_categorytype';
        }
    }
    ?>
    Pouvez-vous me dire où ça coince ? Merci d'avance.

  2. #2
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Points : 677
    Points
    677
    Par défaut
    Bonjour,

    Il faut mettre en premier le CategoryType et ensuite l'objet à transmettre.

    En dessous, la fonction qui est appelée.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public function createForm($type, $data = null, array $options = array())
        {
            return $this->container->get('form.factory')->create($type, $data, $options);
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    $cat = new Category();
    $form = $this->createForm(new CategoryType(), $cat);
    Bonne découverte

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 37
    Points : 31
    Points
    31
    Par défaut
    Oui en effet, merci beaucoup de votre aide, c'était bien cela.

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

Discussions similaires

  1. [2.x] [Form] Personnalisation des formulaires imbriqués
    Par FadeToBlack dans le forum Symfony
    Réponses: 10
    Dernier message: 20/03/2013, 17h55
  2. [Form] Gestion des formulaires
    Par R1pToR dans le forum Struts 1
    Réponses: 5
    Dernier message: 10/07/2007, 15h47
  3. [Forms]accès à des formulaires Oracle via le WeB
    Par habasque dans le forum Forms
    Réponses: 8
    Dernier message: 17/05/2007, 18h49
  4. Réponses: 1
    Dernier message: 16/08/2006, 18h01
  5. Dessiner des formes dans un formulaire
    Par karimspace dans le forum Access
    Réponses: 3
    Dernier message: 30/12/2005, 14h24

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