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 :

A quoi sert le data_class ? [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Points : 219
    Points
    219
    Par défaut A quoi sert le data_class ?
    Bonjour,

    Quand on génère un constructeur de formulaire avec doctrine:generate:form, par défaut, il génère une fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        public function setDefaultOptions(OptionsResolverInterface $resolver)
        {
            $resolver->setDefaults(array(
                'data_class' => 'TOTO\TitiBundle\Entity\MonEntity'
            ));
        }
    Je n'ai pas très bien compris la signification de cette fonction ainsi que la valeur 'data_class'
    Pouvez-vous m'éclairer ?
    Merci.
    Jérôme

  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,

    Cette option permet de spécifier quel type de donnée le FormType doit renvoyer, notamment dans le cas ou aucune donnée n'est passé au formBuilder.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $form=$formFactory->create(new TOTO\TitiBundle\Form\MonEntiteType());
     
    $form->getData();//renvoit une instance de la classe TOTO\TitiBundle\Entity\MonEntite en cohérence avec l'option data_class de MonEntiteType
    cf la doc:
    http://symfony.com/fr/doc/current/bo...rms-data-class

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Points : 219
    Points
    219
    Par défaut
    Merci pour votre réponse.
    donc si je comprends bien, cette valeur sert pour l'aider à savoir de quelle classe est l'entity liée au FormType.
    Dans mon cas j'ai bien mis la classe de mon FormType dans le data_class et pourtant, il me fait une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The form's view data is expected to be an instance of class TOTO\TitiBundle\Form\MonEntite, but is a(n) array. You can avoid this error by setting the "data_class" option to null or by adding a view transformer that transforms a(n) array to an instance of TOTO\TitiBundle\Form\MonEntite.
    Si je mets "null" ça passe mais je ne pense pas que c'est la bonne solution...
    Merci de votre aide.
    Jérôme

  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
    Est-ce que tu n'aurais pas inversé les paramétres data et options ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $this->createForm(new TOTO\TitiBundle\Form\MonEntiteType(),array('required'=>false));
    //au lieu de 
    $this->createForm(new TOTO\TitiBundle\Form\MonEntiteType(),NULL,array('required'=>false));
    vérifie par rapport aux signature des méthodes :
    https://github.com/symfony/symfony/b...ller.php#LC161
    https://github.com/symfony/symfony/b...ormBuilder.php
    https://github.com/symfony/symfony/b...ormFactory.php

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Points : 219
    Points
    219
    Par défaut
    En fait dans mon createForm, je construit mon form à partir de mon entite comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $formEntite = $this->createForm(new MonEntiteType(), $entite);
    en fait c'est dans la fonction setDefaultOptions de ma classe MonentiteType qu'il faut mettre un null pour que ça passe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        public function setDefaultOptions(OptionsResolverInterface $resolver)
        {
            $resolver->setDefaults(array(
                'data_class' => null
            ));
        }
    Faut que je creuse ça de plus près...
    Jérôme

  6. #6
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Points : 219
    Points
    219
    Par défaut
    J'ai trouvé
    En fait ma requête qui permettait de récupérer mon entite MonEntite et de fabriquer mon form avec mon MonEntiteType, était mal construite et ne renvoyait pas un objet MonEntite, mais un tableau de résultat...
    D'où l'erreur...
    Jérôme

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

Discussions similaires

  1. A quoi sert XML-Schema
    Par Community Management dans le forum Valider
    Réponses: 20
    Dernier message: 26/01/2009, 09h52
  2. à quoi sert le délestage?
    Par r0d dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 5
    Dernier message: 06/10/2004, 14h34
  3. a quoi sert le schema dans postgres ??
    Par champion dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 13/09/2004, 10h25
  4. [info] A quoi sert ImageObserver ?
    Par FrigoAcide dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 22/03/2004, 17h20

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