2015-07-16 1 views
1

J'essaie de sauver des entités de 2 classes sous 1 forme J'ai lu this article à ce sujet. Mon code est:Symfony2.3, Entité relationnelle sous 1 forme

class MeetingType extends AbstractType 
    { 
/** 
* @param FormBuilderInterface $builder 
* @param array $options 
*/ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
    $builder 
     ->add('meetingDay', 'text', array('label' => 'Dzień zbiórki')) 
     ->add('meetingTime', 'text', array('label' => 'Godzina zbiórki')) 
     ->add('congregation', 'entity', array(
       'class' => 'ViszmanCongregationBundle:Congregation', 
       'property' => 'name', 'label' => 'Zbór' 
     )); 
    } 

/** 
* @param OptionsResolverInterface $resolver 
*/ 
    public function setDefaultOptions(OptionsResolverInterface $resolver) 
    { 
    $resolver->setDefaults(array(
     'data_class' => 'Viszman\CongregationBundle\Entity\Meeting' 
    )); 
    } 

/** 
* @return string 
*/ 
    public function getName() 
    { 
     return 'viszman_congregationbundle_meeting'; 
    } 
} 

Et un autre type:

class CongregationType extends AbstractType 
    { 
/** 
* @param FormBuilderInterface $builder 
* @param array $options 
*/ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
    $plDays = array('day1', 'day1', 'day1', 'day1', 'day1', 'day1', 'day1'); 
    $builder 
     ->add('name',   'text', array('label' => 'Name')) 
     ->add('meetingDay',  'choice', array('label' => 'meeting day', 'choices' => $plDays)) 
     ->add('meetings','collection', array('type' => new MeetingType(), 'allow_add' => true)) 
    ; 
    } 

/** 
* @param OptionsResolverInterface $resolver 
*/ 
    public function setDefaultOptions(OptionsResolverInterface $resolver) 
    { 
    $resolver->setDefaults(array(
     'data_class' => 'Viszman\CongregationBundle\Entity\Congregation' 
    )); 
    } 

/** 
* @return string 
*/ 
    public function getName() 
    { 
    return 'viszman_congregationbundle_congregation'; 
    } 
} 

Et quand j'essaie ne rendre ce formulaire, je ne reçois que CongregationType et aucune forme MeetingType. partie du Code responsable du rendu sous forme est:

<h1>Congregation creation</h1> 

{{ form_start(form) }} 
{{ form_widget(form) }} 
    <h3>Meetings</h3> 
    <ul class="tags" data-prototype="{{ form_widget(form.meetings.vars.prototype)|e }}"> 
{{ form_widget(form.meetings) }} 
</ul> 

{{ form_end(form) }} 
+0

Pour les débutants, form_widget (form) affichera le reste de tous les widgets de formulaire, y compris form.meetings. Deuxièmement, dans l'objet $ congrégation que vous transmettez à CongregationFormType, existe-t-il des objets de réunion? Si vous n'en passez aucun, aucun ne sera rendu. – Cerad

+0

de l'article que j'ai lu dans le site de symfony sur les formes incorporées, je comprends qu'il est de créer de nouveaux objets – Viszman

+0

Le type de champ d'entité est pour la sélection d'une entité existante. – nifr

Répondre

0

Si je me souviens bien la forme entité champ est utilisé pour faire référence à une entité existante, de ne pas créer un nouveau.

Ce n'est pas ce dont vous avez besoin, ce dont vous avez besoin est des formes intégrées, jetez un oeil à the symfony book.