Установка значения по умолчанию в комплекте symfony2 sonata admin - программирование
Подтвердить что ты не робот

Установка значения по умолчанию в комплекте symfony2 sonata admin

как я могу установить значение по умолчанию в пакете admin параметр data отсутствует в методе configureFormFields

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

как использовать атрибут данных для установки значения по умолчанию внутри поля?

4b9b3361

Ответ 1

Я предполагаю, что вы, вероятно, уже решили это, но, как ссылка на кого-либо, вы можете переопределить метод getNewInstance() и установить значение по умолчанию для объекта:

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

    return $instance;
}

Ответ 2

вы также можете напрямую назначить значение по умолчанию для свойства объекта:

class TheEntity
{
    private $name = 'default name';
}

Ответ 3

В дополнение к решению @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/

Ответ 4

Для boolean другой параметр - установить значение data в первом массиве, переданном вашему методу add, внутри configureFormFields

Поэтому после некоторого memtoring мой код (для флажка, который я хотел проверить по умолчанию), выглядел примерно так:

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

... который сохранил несколько строк в верхней части моего файла, так как тогда я мог бы избавиться от определения getNewInstance().