我有 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”和 textarea“cause”。
前任:
--label-- 病理学 --/label--
病理学 A:是/否 - Textarea 原因
病理学 B:是/否 - Textarea 原因
Pathologie C:是/否 - Textarea 原因
Pathologie D:是/否 - Textarea 原因
Pathologie E:是/否 - Textarea 原因
我像下面这样继续,但不方便的是每一行都应该用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,
));
}