У меня есть 3 сущности Пользователь
class User extends BaseUser
{
/**
* @ORM\OneToMany(targetEntity="UserPathologie", mappedBy="user")
*/
protected $userPathologies;
}
Патология
class Pathologie
{
/**
* @var string
*
* @ORM\Column(name="nom", type="string", length=255)
*/
private $nom;
/**
* @ORM\OneToMany(targetEntity="UserPathologie", mappedBy="pathologie")
*/
protected $userPathologies;
}
Патология пользователя
class UserPathologie
{
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="userPathologies")
*/
protected $user;
/**
* @ORM\ManyToOne(targetEntity="Pathologie", inversedBy="userPathologies")
*/
protected $pathologie;
/**
* @var boolean
*
* @ORM\Column(name="atteint", type="boolean")
*/
private $atteint;
/**
* @var string
*
* @ORM\Column(name="cause", type="text")
*/
private $cause;
}
Затем в форме пользователя я хочу иметь список всех «патологий» с флажком «atteint» и текстовой областью «причина».
ex:
--label-- Патологии --/label--
Патология A : Да/Нет - Причина Textarea
Патология B : Да/Нет - причина в текстовом поле
Патология C : Да/Нет - причина в текстовом поле
Патология D : Да/Нет - Причина Textarea
Патология E : Да/Нет - причина в текстовом поле
Я продолжаю, как показано ниже, но неудобно то, что каждая строка должна добавляться динамически с помощью javascript, а «патологии» находятся в поле выбора.
в UserRegiterType
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('userPathologies', 'collection', array(
'type' => new UserPathologieType(),
'label' => false,
'allow_add' => true,
));
}
А в UserPathologieType у меня есть
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('pathologie')
->add('atteint', 'checkbox', array(
'label' => false,
'required' => false,
))
->add('cause', 'textarea', array(
'label' => 'Cause',
'required' => false,
));
}