Symfony2表单 - 选中所有复选框的实体字段

时间:2012-05-24 18:41:34

标签: forms symfony

我有一个没有课程的表格

class ProfilesSearchType extends AbstractType {

    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder
                ->add('disabilityType', 'entity', array(
                    'class' => 'AldenXyzBundle:DisabilityType',
                    'property' => 'name',
                    'multiple' => true,
                    'expanded' => true,
                ))
        ;
    }

在控制器中调用

public function listAction()
{
    $form = $this->createForm(
        new \Alden\XyzBundle\Form\Type\ProfilesSearchType(), array());
    if (isset($_GET['profile_search']))
    {
        $form->bindRequest($request);
        $d = $form->getData();
        // some stuff here
    }
    return array(
        'form' => $form->createView()
    );
}

如何将disabilityType中的所有复选框设置为默认选中状态? 类定义是(我删除了setter和getters)

class DisabilityType {

    /**
     * @var integer $disabilityTypeId
     *
     * @ORM\Column(name="disability_type_id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $disabilityTypeId;

    /**
     * @var string $name
     *
     * @ORM\Column(name="name", type="string", length=50, nullable=false)
     */
    private $name;

    /**
     * @var Profile
     *
     * @ORM\ManyToMany(targetEntity="Profile", mappedBy="disabilityType")
     */
    private $profile;

    public function __construct()
    {
        $this->profile = new \Doctrine\Common\Collections\ArrayCollection();
    }
}

2 个答案:

答案 0 :(得分:1)

我在控制器中添加了

$disabilityDegree = $this->getDoctrine()->
    getRepository("AldenXyzBundle:DisabilityDegree")->findAll();
$form = $this->createForm(new \Alden\XyzBundle\Form\Type\ProfilesSearchType(), array(
        'disabilityType' => new \Doctrine\Common\Collections\ArrayCollection($disabilityType),
            )
    );

答案 1 :(得分:0)

您必须使用所有disabilityType

初始化您的表单 你可以这样做:

$disabilities = $this->getDoctrine()->getRepository("AldenXyzBundle:DisabilityType")-  >findAll();
$form = $this->createForm(new \Alden\XyzBundle\Form\Type\ProfilesSearchType(), $disabilities);