19

Sonata 管理バンドルでデフォルト値を設定するにはどうすればよいですか? configureFormFields メソッドに data オプションがありません

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 に答える