Symfony中包含属性和两个复选框列表的多对多

时间:2015-02-02 13:00:28

标签: php forms symfony doctrine

我有两个实体,即用户和语言,它们之间具有多个属性,具有属性。我想创建一个带有两个显示相同值的复选框列表的表单,但是第一个列表给予额外属性“good”值,第二个列表给出“bad”。

是否可以使用Symfony的表单生成器执行此操作?

我的用户类:

class User {

    /**
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
     private $id;
     /**
     * @ORM\OneToMany(targetEntity="Lift\TalentBundle\Entity\UserLanguage",    mappedBy="user", cascade={"persist"})
     */
    private $languages;

我的语言课程:

class Language
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="name", type="string", length=255)
     */
    private $name;

他们之间的关系类:

class UserLanguage {

/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @var integer
 *
 * @ORM\Column(name="level", type="integer")
 */
private $level;

/**
 * @ORM\ManyToOne(targetEntity="Lift\TalentBundle\Entity\User", inversedBy="languages")
 * @ORM\JoinColumn(nullable=false)
 */
private $user;

/**
 * @ORM\ManyToOne(targetEntity="Lift\TalentBundle\Entity\Language")
 * @ORM\JoinColumn(nullable=false)
 */
private $language;

$ level有int值(1表示好,2表示不好)

我尝试创建这样的表单:

$builder->add('languages','entity',[
                'class' =>'LiftTalentBundle:UserLanguage',
                'multiple' => true,
                'expanded' => true,
            ])
        ;

但它不起作用,我不知道如何构建两个列表,在我的UserLanguage表中自动分配$ level值

1 个答案:

答案 0 :(得分:0)

在此处找到解决方案: http://www.prowebdev.us/2012/07/symfnoy2-many-to-many-relation-with.html

使用User实体中的新功能,我可以根据需要构建我的2个列表