Symfony嵌入了ManyToOne关系

时间:2017-12-17 20:39:41

标签: forms symfony doctrine

我正在尝试改进个人应用程序,但是我遇到了嵌入式表单的问题。事实上,我有一个advertType表单,我想在其中添加一个字段,以便选择附加到广告的技能和级别。

通过这种方式,我有一个广告实体,一个技能实体,一个adsSkill实体,由于OneToMany关系,它引用了广告和技能实体。 level属性来自advertSkill实体。

我不知道如何在广告表单中添加技能字段,以便广告将与相应的技能和级别一起正确存储。

我的广告实体中没有引用技能的属性。

下面是我的advertType类的示例:

$builder
        ->add('date',       DateTimeType::class, array(
            'view_timezone' => 'Europe/Paris',  
            'with_seconds' => true              
        ))
        ->add('title',      TextType::class)
        ->add('content',    TextareaType::class)
        ->add('author',     TextType::class)
        ->add('email',      TextType::class)
        ->add('image',      ImageType::class)
        ->add('categories', EntityType::class, array(
            'class'             =>  'OCPlatformBundle:Category',
            'choice_label'      =>  'name',
            'multiple'          =>  true
        ))
        ->add('save',       SubmitType::class);

感谢您的帮助,我可以提供有关我的代码的更多详细信息,但是当我将一些代码添加到代码中时,它会很难看。

1 个答案:

答案 0 :(得分:0)

我试着在法语论坛上继续阅读有关同一问题的一些建议,但我还有一个错误,因为我没有显示我的技能名称和级别名称。

我的AdvertType表单类:

enter code here         $builder
        ->add('date',       DateTimeType::class, array(
            'view_timezone' => 'Europe/Paris',  // On affiche l'horaire avec le fuseau horaire de Paris
            'with_seconds' => true              // On ajoute les secondes àl'affichage de l'horaire
        ))
        ->add('title',      TextType::class)
        ->add('content',    TextareaType::class)
        ->add('author',     TextType::class)
        ->add('email',      TextType::class)
        ->add('image',      ImageType::class)
        ->add('categories', EntityType::class, array(
            'class'             =>  'OCPlatformBundle:Category',
            'choice_label'      =>  'name',
            'multiple'          =>  true
        ))
        ->add('advertSkill', CollectionType::class, array(
            'entry_type'        => AdvertSkillType::class
        ))
        ->add('save',       SubmitType::class);

我的新AdvertType表单类:

enter code here     public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('advertSkill', EntityType::class, array(
            'class'                  =>  'OCPlatformBundle:Skill',
            'choice_label'           =>  'name'
        ))
        ->add('level', EntityType::class, array(
            'class'             =>  'OCPlatformBundle:AdvertSkill',
            'choices'           =>  array('Débutant', 'Intermédiaire', 'Expert')
        ));
}

此外,我在advertSkill类引用的两个类中添加了OneToMany属性“advertSkill”。

我不明白如何使其有效!