Есть ли способ определить текущее действие (создать или изменить) в Sonata\AdminBundle\Admin\Admin::configureFormFields()?

Я хотел бы создать различные конфигурации полей для создания и редактирования действий в Sonata Admin Bundle.

Есть ли способ это определить, кроме проверки $this->getSubject()->getId() в Sonata\AdminBundle\Admin\Admin::configureFormFields()?


person Max Romanovsky    schedule 24.07.2013    source источник


Ответы (5)


Вы также можете сделать это:

protected function configureFormFields(FormMapper $formMapper) {
  if ($this->isCurrentRoute('create')) {
    // CREATE
  }
  else {
    // EDIT
  }
}
person Picoss    schedule 25.07.2013
comment
Спасибо! Выглядит лучше :) - person Max Romanovsky; 25.07.2013

с:

if($this->getRequest()->get($this->getIdParameter()) == null){
   // create
} else {
   // edit
}
person Roberto    schedule 24.07.2013
comment
Спасибо, но для меня это такой же грязный хак, как проверка поля ID объекта сущности :) - person Max Romanovsky; 25.07.2013
comment
Этот всегда возвращает «создать», когда администратор загружается через sonata_type_collection. - person 11mb; 05.01.2016

Я использую это:

$creationMode = ($this->id($this->getSubject()))?(false):(true);
if ($creationMode){
 //Ok
}
person djoo    schedule 09.02.2015

В админке сонаты с версии 3.х

  if ($this->isCurrentRoute('create')) {
    // CREATE
  }
  else {
    // EDIT
  }

В админке сонаты до версии 3.x используйте:

  $subject = $this->getSubject();
  if ($subject->isNew()) { 
    // CREATE
  }
  else {
    // EDIT
  }
person Community    schedule 08.05.2018

Вы также можете сделать это:

protected function configureFormFields(FormMapper $formMapper) {
  if ($this->isCurrentRoute('create')) {
    // CREATE
  }
  else {
    // EDIT
  }
}
person Artsofe Dev    schedule 01.03.2018