表单类型复选框选中创建表单SonataAdminBundle

时间:2014-05-27 08:11:02

标签: symfony sonata-admin

我正在努力解决这个问题而无法找到解决方案。我今天刚搬到SonataAdminBundle。

我想为复选框类型选中默认值,但只是在表单中创建SonataAdminBundle。在普通的Controller中,我可以定义具有不同形式值的创建和编辑功能。但是在SonataAdminBundle中,创建和编辑表单似乎只有一个功能:

protected function configureFormFields(FormMapper $formMapper)
    {
        $formMapper
             ->add('aktif', 'checkbox', array('required' => false))
        ;
    }

我尝试添加'attr' => array('checked' => 'checked'),但在编辑数据时也会发生这种情况。

3 个答案:

答案 0 :(得分:3)

您可以使用Admin类中的getSubject()函数来查看您是否在创建或编辑表单中。

这样的事情:

if (!$this->getSubject()->getId()) {
    // this is the create form
    $attrs = array('checked' => 'checked');
}
else {
    // this is the edit form
    $attrs = array();
}

你写了选项:

'attr' => $attrs
祝你好运!

答案 1 :(得分:0)

如果您总是遇到此问题,可以采用以下解决方案:

在您的实体类中,在__construct方法中,插入以下代码:

$this->aktif = true;

答案 2 :(得分:0)

这里的答案是正确的,但最佳做法是在管理员类中覆盖getNewInstance,如下所示:

public function getNewInstance()
{
    $instance = parent::getNewInstance();
    $instance->setAktif(true);

    return $instance;
}