我有两个实体,用户和语言,它们之间的关系是多对多,它们之间有属性。我想制作一个带有两个复选框列表的表单,显示相同的值,但第一个列表为额外属性提供值"好",第二个列表给出"坏"。
是否可以使用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;
我之间的关系类:
类用户语言 {
/**
* @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值
在这里找到解决方案:http://www.prowebdev.us/2012/07/symfnoy2-many-to-many-relation-with.html
使用用户实体中的新功能,我可以根据需要构建我的 2 个列表