2013-07-24 2 views
15

Я хотел бы создать различные настройки полей для создания и редактирования действий в Sonata Admin Bundle.Есть ли способ определить текущее действие (создать или отредактировать) в Sonata AdminBundle Admin Admin :: configureFormFields()?

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

ответ

25

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

protected function configureFormFields(FormMapper $formMapper) { 
    if ($this->isCurrentRoute('create')) { 
    // CREATE 
    } 
    else { 
    // EDIT 
    } 
} 
+0

Спасибо! Это выглядит лучше :) –

+0

Что такое тема? – d0001

+0

getSubject() получает объект (!), Над которым работает форма. Я думаю... – caponica

2

с:

if($this->getRequest()->get($this->getIdParameter()) == null){ 
    // create 
} else { 
    // edit 
} 
+0

Спасибо, но что касается меня, это тот же грязный хак, что и проверка поля идентификатора объекта сущности :) –

+0

Это всегда возвращает «создать», когда админ загружается через sonata_type_collection – 11mb

0

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

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^