Вопрос по symfony, symfony-sonata – установка значения по умолчанию в админке Symfony2

19

Как я могу установить значение по умолчанию в связке администратора соната опция данных отсутствует в методе configureFormFields

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

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

Что такое fieldType для имени? Amit

Ваш Ответ

4   ответа
6

апрямую:

class TheEntity
{
    private $name = 'default name';
}
@FallenSquirrel это работа, но я думаю, что это не желаемое решение, так как OP, вероятно, хочет, чтобы решение было сделано в Sonata, и не хочет касаться свойства класса
Почему этот ответ отклонен? Это работает и включает в себя наименьшее переопределение кода поставщика. Лучший ответ имхо.
46

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

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

    return $instance;
}
Именно то, что я искал. Спасибо!
При попытке установить дату и время таким образом $ instance- & gt; setCloseTimeUTC ((new \ DateTime ()) - & gt; format ("Y-m-d H: i: s & apos;)); при сохранении выдает ошибку & quot; ожидается один из следующих типов: null, DateTime & quot;
@RobMasters Что если атрибут, который нам нужно отобразить, на самом деле является методом?
0

data значение в первом массиве передается вашемуadd метод, внутриconfigureFormFields

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

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

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

При редактировании существующего значения элемента из «данных» переопределит значение от объекта.
5

Если вы хотите установить отношение, вы можете получить ссылку из управления объектами (вместо полного объекта):

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/

Так что, если эти 11 не могут быть жестко закодированы?
Ваш блог был очень полезен для меня & lt; 3
Где бы идентификатор соотв. & Quot; 11 & Quot; родом из?
Да, мой вопрос точно.
Не уверен, что вы имеете в виду. В моем примере это было просто закодировано, потому что я скопировал его из тестового примера. Просто замените 11 на $ branch, которая приходит из стека запросов. Я думал, что это было довольно очевидно. Я отредактирую свой пример в дополнение к этому.

Похожие вопросы