19

如何在奏鸣曲管理包中设置默认值 configureFormFields 方法中缺少数据选项

protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
        ->add('name', null, array('required' => true, 'data' => "my default value"))
    ;
}

如何使用数据属性在字段内设置默认值???

4

4 回答 4

47

我想您现在可能已经解决了这个问题,但是作为对其他任何人的引用,您可以覆盖 getNewInstance() 方法并在对象上设置默认值:

public function getNewInstance()
{
    $instance = parent::getNewInstance();
    $instance->setName('my default value');

    return $instance;
}
于 2012-06-27T12:17:45.900 回答
7

您还可以直接将默认值分配给实体的属性:

class TheEntity
{
    private $name = 'default name';
}
于 2014-02-15T16:40:30.273 回答
5

除了@RobMasters 解决方案:

如果要设置关系,可以从 entitymanager 获取引用(而不是完整对象):

public function getNewInstance()
{
    $instance = parent::getNewInstance();

    if ($this->hasRequest()) {
        $branch = $this->getRequest()->get('branch', null);

        if ($branch !== null) {
            $entityManager = $this->getModelManager()->getEntityManager('MyBundle\Entity\Branch');
            $branchReference = $entityManager->getReference('MyBundle\Entity\Branch', $branch);

            $instance->setBranch($branchReference);
        }
    }
    return $instance;
}

我将示例添加到我的博客: http ://blog.webdevilopers.net/populate-resp-set-default-values-on-form-resp-object-or-instance-in-sonataadminbundle/

于 2014-09-03T14:16:26.247 回答
0

对于布尔值,另一种选择是在传递给您的方法data的第一个数组中设置一个值,在addconfigureFormFields

所以在一些记忆之后,我的代码(对于一个我想默认检查的复选框)最终看起来像这样:

protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
        ->add('name')
        ->add('visible', null, ['label'=>'Visibility', 'data' => true ])
    ;
}

...这在我的文件顶部保存了几行,因为我可以摆脱 getNewInstance() 定义。

于 2018-02-27T11:19:25.993 回答