Установка значения по умолчанию в комплекте symfony2 sonata admin
как я могу установить значение по умолчанию в пакете admin
параметр data отсутствует в методе configureFormFields
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('name', null, array('required' => true, 'data' => "my default value"))
;
}
как использовать атрибут данных для установки значения по умолчанию внутри поля?
Ответы
Ответ 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().