我有两个实体,即用户和语言,它们之间具有多个属性,具有属性。我想创建一个带有两个显示相同值的复选框列表的表单,但是第一个列表给予额外属性“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值
答案 0 :(得分:0)
在此处找到解决方案: http://www.prowebdev.us/2012/07/symfnoy2-many-to-many-relation-with.html
使用User实体中的新功能,我可以根据需要构建我的2个列表