有没有办法在Sonata \ AdminBundle \ Admin \ Admin :: configureFormFields()中确定当前操作(创建或编辑)?

时间:2013-07-24 12:59:46

标签: symfony sonata-admin

我想在Sonata Admin Bundle中为创建和编辑操作创建不同的字段配置。

有没有办法确定它,除了检查$this->getSubject()->getId()中的Sonata\AdminBundle\Admin\Admin::configureFormFields()

6 个答案:

答案 0 :(得分:27)

你也可以这样做:

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

答案 1 :(得分:2)

使用:

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

答案 2 :(得分:1)

我用这个:

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

答案 3 :(得分:1)

来自版本3.x的sonata admin

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

在版本3.x之前的sonata admin中使用:

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

答案 4 :(得分:0)

你也可以这样做:

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

答案 5 :(得分:0)

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

    return \end($pathArray);
}