简体   繁体   English

Symfony2.3,关系实体(1种形式)

[英]Symfony2.3, Relational entity in 1 form

I am trying to save entities of 2 classes in 1 form I have read this article about it. 我正在尝试以一种形式保存2类的实体,我已经阅读了有关此的文章。 My code is : 我的代码是:

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';
  }
}

And another 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';
  }
}

And when I try do render this form I only get CongregationType and no MeetingType form. 当我尝试渲染此表单时,我只会得到CongregationType而没有MeetingType表单。 part of code responsible for rendering form is: 负责呈现表单的代码部分是:

<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) }}

If I remember correctly the entity form field is used to reference an existing entity, not to create a new one. 如果我没有记错的话,实体表单字段用于引用现有实体,而不是用于创建新实体。

This is not what you need, what you need is embedded forms, take a look at the symfony book . 这不是您需要的,您需要的是嵌入式表格,看一看symfony书

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM