Valeur de champ de formulaire non mappé

a marqué ce sujet comme résolu.

Bonjour à tous,

J'ai un formulaire qui se présente (en résumé) comme ceci :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<?php
class MemberType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
         ->add('packsServices', 'collection', array(
                'type' => new PackServiceEntityType(),
                'allow_add' => true,
                'allow_delete' => true,
                'by_reference' => false,
                'mapped' => false,
                'label' => false,
            ));
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<?php
class PackServiceEntityType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
        ->add('pack', 'entity', array(
                'class' => 'Pack',
                'property' => 'name',
                'label' => false))
        ->add('exist', 'hidden', array(
                'mapped' => false
        ));
    }

Ce que je voudrai, c'est pouvoir accéder aux valeurs dans mon controller. J'ai essayé : $form->get('packsServices') , mais je ne vois pas le champ "exist", j'ai essayé $form->get('packsServices.exist') , $form->get('packsServices')->get('exist') … mais je n'obtiens que des erreurs.

PS: Y a t-il un moyen simple de créer un formulaire de collection d'entité qui ne soit pas mappé? En gros j'ai les entités : A <-> B <-> C <-> D Je veux dans le formulaire de A un collection de liste déroulante de D.

Merci par avance.

+0 -0

Tu veux dire dans : php form->get('packsServices')

Ceci :

  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
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
object(stdClass)[1481]
  public '__CLASS__' => string 'Symfony\Component\Form\Form' (length=27)
  public 'config' => 
    object(stdClass)[2553]
      public '__CLASS__' => string 'Symfony\Component\Form\FormBuilder' (length=34)
      public 'children' => 
        array (size=0)
          empty
      public 'unresolvedChildren' => 
        array (size=0)
          empty
      public 'locked' => boolean true
  public 'parent' => 
    object(stdClass)[2549]
      public '__CLASS__' => string 'Symfony\Component\Form\Form' (length=27)
      public 'config' => 
        object(stdClass)[2537]
          public '__CLASS__' => string 'Symfony\Component\Form\FormBuilder' (length=34)
          public 'children' => string 'Array(0)' (length=8)
          public 'unresolvedChildren' => string 'Array(0)' (length=8)
          public 'locked' => boolean true
      public 'parent' => null
      public 'children' => 
        object(stdClass)[2533]
          public '__CLASS__' => string 'Symfony\Component\Form\Util\OrderedHashMap' (length=42)
          public 'elements' => string 'Array(44)' (length=9)
          public 'orderedKeys' => string 'Array(44)' (length=9)
          public 'managedCursors' => string 'Array(0)' (length=8)
      public 'errors' => 
        array (size=0)
          empty
      public 'submitted' => boolean true
      public 'clickedButton' => null
      public 'modelData' => 
        object(stdClass)[2532]
          public '__CLASS__' => string 'Entity\Member' (length=56)
          public 'id' => int 14
      public 'normData' => 
        object(stdClass)[2455]
          public '__CLASS__' => string 'Entity\Member' (length=56)
          public 'id' => int 14
      public 'viewData' => 
        object(stdClass)[2624]
          public '__CLASS__' => string 'Entity\Member' (length=56)
          public 'id' => int 14
      public 'extraData' => 
        array (size=0)
          empty
      public 'transformationFailure' => null
      public 'defaultDataSet' => boolean true
      public 'lockSetData' => boolean false
  public 'children' => 
    object(stdClass)[2538]
      public '__CLASS__' => string 'Symfony\Component\Form\Util\OrderedHashMap' (length=42)
      public 'elements' => 
        array (size=2)
          0 => string 'Symfony\Component\Form\Form' (length=27)
          1 => string 'Symfony\Component\Form\Form' (length=27)
      public 'orderedKeys' => 
        array (size=2)
          0 => string '0' (length=1)
          1 => string '1' (length=1)
      public 'managedCursors' => 
        array (size=0)
          empty
  public 'errors' => 
    array (size=0)
      empty
  public 'submitted' => boolean true
  public 'clickedButton' => null
  public 'modelData' => 
    array (size=2)
      0 => 
        object(stdClass)[2541]
          public '__CLASS__' => string 'Entity\PackService' (length=61)
          public 'id' => null
          public 'pack' => string 'Proxies\__CG__\Entity\Pack' (length=69)
          public 'service' => null
          public 'members' => string 'Array(0)' (length=8)
      1 => 
        object(stdClass)[2543]
          public '__CLASS__' => string 'Entity\PackService' (length=61)
          public 'id' => null
          public 'pack' => string 'Proxies\__CG__\Entity\Pack' (length=69)
          public 'service' => null
          public 'members' => string 'Array(0)' (length=8)
  public 'normData' => 
    array (size=2)
      0 => 
        object(stdClass)[2544]
          public '__CLASS__' => string 'Entity\PackService' (length=61)
          public 'id' => null
          public 'pack' => string 'Proxies\__CG__\Entity\Pack' (length=69)
          public 'service' => null
          public 'members' => string 'Array(0)' (length=8)
      1 => 
        object(stdClass)[2545]
          public '__CLASS__' => string 'Entity\PackService' (length=61)
          public 'id' => null
          public 'pack' => string 'Proxies\__CG__\Entity\Pack' (length=69)
          public 'service' => null
          public 'members' => string 'Array(0)' (length=8)
  public 'viewData' => 
    array (size=2)
      0 => 
        object(stdClass)[2546]
          public '__CLASS__' => string 'Entity\PackService' (length=61)
          public 'id' => null
          public 'pack' => string 'Proxies\__CG__\Entity\Pack' (length=69)
          public 'service' => null
          public 'members' => string 'Array(0)' (length=8)
      1 => 
        object(stdClass)[2547]
          public '__CLASS__' => string 'Entity\PackService' (length=61)
          public 'id' => null
          public 'pack' => string 'Proxies\__CG__\Entity\Pack' (length=69)
          public 'service' => null
          public 'members' => string 'Array(0)' (length=8)
  public 'extraData' => 
    array (size=0)
      empty
  public 'transformationFailure' => null
  public 'defaultDataSet' => boolean true
  public 'lockSetData' => boolean false
+0 -0

Salut !

Dans le résultat que tu nous fournis, il n'y a effectivement pas la valeur du champ exist.

Juste : tu pourrais me dire à quoi te sert ce champ ?

PS: Y a t-il un moyen simple de créer un formulaire de collection d'entité qui ne soit pas mappé? En gros j'ai les entités : A <-> B <-> C <-> D Je veux dans le formulaire de A un collection de liste déroulante de D.

Freeza

Il te le faudrait à quel niveau ?
Là, comme ça, je ferais quelque chose comme suit.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<?php
class AType {

// …
    ->add('ds', 'collection', array(
        'type' => 'entity',
        'entry_options' /* 'options' pour Symfony < 2.8 */ => array(
            'class' => 'Ton\Bundle\Entity\D',
            'property' => 'name'
        )
    )
// …
+0 -0

Salut !

Dans le résultat que tu nous fournis, il n'y a effectivement pas la valeur du champ exist.

Juste : tu pourrais me dire à quoi te sert ce champ ?

Comme je souhaite pouvoir ajouter/supprimer ces entités alors qu'elles ne sont pas lié directement à mon objet, j'essaie de trouver un moyen de savoir qu'elle entité existait avant l'envoie du formulaire.

Il te le faudrait à quel niveau ?
Là, comme ça, je ferais quelque chose comme suit.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<?php
class AType {

// …
    ->add('ds', 'collection', array(
        'type' => 'entity',
        'entry_options' /* 'options' pour Symfony < 2.8 */ => array(
            'class' => 'Ton\Bundle\Entity\D',
            'property' => 'name'
        )
    )
// …

Ymox

Exactement le niveau que j'ai indiqué (3). Je savais pas qu'on pouvais faire un collection d'entité comme cela, j'ai pourtant fais des recherchers pendant des jours…

Merci!

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte