新闻和用户之间的许多关系

时间:2013-03-16 16:23:53

标签: php symfony

我有一个名为News的实体,其中包含与ManyToMany实体的User关系。这意味着一篇文章可以由多位作者撰写。

/**
* @ORM\ManyToMany(targetEntity="GW2\UserBundle\Entity\User")
*/
private $authors;

问题在于我想以我用来添加News的形式动态添加作者,但我不知道如何存储数据,以及保持我的两个实体之间的关系。作者的数量不固定,不受限制。

我对collection类型做了一些研究并将其添加到我的NewsType,但我真的不知道如何使用它。


修改:这是我当前的NewsType(没有作者collection):

<?php
namespace GW2\SiteBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

class NewsType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('title', 'text', array('error_bubbling' => true))
            ->add('introduction', 'textarea', array('attr' => array('class' => 'input-block-level redactor_content'), 'error_bubbling' => true))
            ->add('content', 'textarea', array('attr' => array('class' => 'input-block-level redactor_content'), 'error_bubbling' => true))
            ->add('publication', 'checkbox', array('required' => false, 'error_bubbling' => true))
            ->add('categories', 'entity', array(
                'class' => 'GW2SiteBundle:Category',
                'property' => 'name',
                'required' => false,
                'multiple' => true
            ))
        ;
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'GW2\SiteBundle\Entity\News'
        ));
    }

    public function getName()
    {
        return 'gw2_sitebundle_newstype';
    }
}

1 个答案:

答案 0 :(得分:0)

我最后通过添加带有FOSUB类型的collection来解决我的问题,同时指定allow_addallow_delete选项。

->add('authors', 'collection', array(
    'type'=> 'fos_user_username',
    'allow_add' => true,
    'allow_delete' => true
))

然后我使用JavaScript添加adding-removing solution以动态添加表单中的字段(感谢Thomas Potaire)。