Is there any way to determine current action (create or edit) in Sonata\AdminBundle\Admin\Admin::configureFormFields()?

两盒软妹~` 提交于 2020-01-12 06:37:09

问题


I'd like to create different fields configuration for create and edit actions in Sonata Admin Bundle.

Is there any way to determine it except checking $this->getSubject()->getId() in Sonata\AdminBundle\Admin\Admin::configureFormFields()?


回答1:


You can also do this:

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



回答2:


with:

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



回答3:


I use this :

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



回答4:


In sonata admin from version 3.x

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

In sonata admin before version 3.x use:

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



回答5:


You can also do this:

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



回答6:


public function getAction(): ?string
{
    if (! $this->getRequest()) {
        return null;
    }
    $pathArray = \explode('/', $this->request->getPathInfo());

    return \end($pathArray);
}


来源:https://stackoverflow.com/questions/17834765/is-there-any-way-to-determine-current-action-create-or-edit-in-sonata-adminbun

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!