我目前正在开发一个symfony项目,我需要一个表单来编辑名为Location
的现有实体。
一个Location
对象可以容纳0 to n
Machines
。表单应包含多个复选框,预选值取决于实体Location
已包含任何Machine
的天气。如果是,请预选复选框,如果不是,请将其留空。
地点:
...
class Location
{
/**
* @ORM\OneToMany(targetEntity="Machine", mappedBy="location")
*
*/
private $machines;
...
机器:
...
class Machine
{
/**
* @ORM\ManyToOne(targetEntity="Location", inversedBy="machines")
* @ORM\JoinColumn(name="location_id", referencedColumnName="id")
*/
private $location;
...
我构建了这样的表单:
$form = $this->createFormBuilder($location)
->add('name', null , array( 'label' => 'Roomname: ', 'attr'=> array( 'placeholder'=>'Enter a name') ) )
->add('descr', null , array( 'label' => 'Description: ', 'attr'=> array( 'placeholder'=>'Enter a description') ) )
->add('machines', 'entity', array('class' => 'PRwissHostsBundle:Machine',
'property' => 'name',
'required' => false,
'expanded' => true,
'multiple' => true,
))
->getForm();
上面的代码会生成一个带有几个复选框的表单,其旁边是实体名称。我想预先选择机器已经与位置相关的复选框。
我查看了this个问题,但不幸的是"data" => x
只引用了一个值。
我有什么想法可以做到这一点?提前谢谢!
答案 0 :(得分:1)
在初始化表单之前,将计算机添加到控制器中的Location实体。 Symfony表单将根据实体数据自动设置复选框的值。