1

数据库将性别字段存储为 smallint。Easyadmin 基于实体属性呈现字段。我不会简单地放一个字符串,例如。“男性”而不是 1。

我试图覆盖 AdminController 并覆盖类似的方法createEditForm()createEntityFormBuilder()但最终以“调用handleRequest()null 上的成员函数”结束

easy_admin:
  entities:
    User:
      controller: App\Controller\CustomAdminController
      class: App\Entity\User
      form:
        title: "Details"
        fields:
- { property: 'userProfile.gender', type: 'text', label: 'Gender', 
type_options:{ disabled: true, required: false} }
4

2 回答 2

0

我切换到 SonataAdmin Bundle,它提供了一种简单的方法来正确地完成它。

于 2019-09-25T08:47:57.397 回答
0

您可以尝试更改您的getGender()setGender()方法来处理您的实体中的转换。

public function getGender(): ?string
{
  if (0 === $this->gender){
    return 'Female';
  }
  if (1 === $this->gender){
    return 'Male';
  }
  if (2 === $this->gender){
    return 'Other';
  }
}
public function setGender(string $gender): self
{
  if ('female'=== strtolower($gender)){ 
    $this->gender = 0;
  } else if ('male'=== strtolower($gender)){ 
    $this->gender = 1;
  } else { 
    $this->gender = 2;
  }
  return $this;
}
于 2019-09-14T09:24:13.690 回答