У меня есть два объекта - "Пользователь и язык", с отношением многих ко многим с атрибутами между ними. Я хочу создать форму с двумя списками флажков с одинаковыми значениями, но первый список даст значение "хорошо" для дополнительного атрибута, а во втором списке "плохо".
Можно ли сделать это с помощью создателя форм 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,
])
;
Но это не сработает, и я понятия не имею, как построить два списка, которые автоматически присваивают значение $ level в моей таблице UserLanguage
Найдите решение здесь: http://www.prowebdev.us/2012/07/symfnoy2-many-to-many-relation-with.html
С новыми функциями в объекте User я могу создать свой 2-й список, поскольку я хочу