18 votes

Existe-t-il un moyen de déterminer l'action en cours (création ou modification) dans Sonata ? \AdminBundle\Admin\Admin ::configureFormFields() ?

J'aimerais créer une configuration de champs différente pour les actions de création et d'édition dans l'Admin Bundle de Sonata.

Existe-t-il un moyen de le déterminer autrement qu'en vérifiant $this->getSubject()->getId() en Sonata\AdminBundle\Admin\Admin::configureFormFields() ?

31voto

Picoss Points 1750

Vous pouvez également faire ceci :

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

2voto

Roberto Points 393

Avec :

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

1voto

djoo Points 353

J'utilise ce :

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

1voto

Dans sonata admin à partir de la version 3.x

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

Dans sonata admin avant la version 3.x, utilisez :

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

0voto

Artsofe Dev Points 3

Vous pouvez également faire ceci :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X