具有多个预先选中的复选框的Symfony表单

时间:2015-02-13 12:00:09

标签: forms symfony checkbox

我目前正在开发一个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只引用了一个值。

我有什么想法可以做到这一点?提前谢谢!

1 个答案:

答案 0 :(得分:1)

在初始化表单之前,将计算机添加到控制器中的Location实体。 Symfony表单将根据实体数据自动设置复选框的值。