如何在属性字段中显示字符串而不是数据库中的整数?

时间:2019-09-13 14:50:47

标签: symfony4 symfony2-easyadmin php-7.3 easyadmin

数据库将性别字段存储为smallint。 Easyadmin根据实体属性渲染字段。 我不会简单地放一个字符串。 “男”而不是1。

我尝试覆盖AdminController并覆盖createEditForm()createEntityFormBuilder()之类的方法,但最终导致 “对成员函数handleRequest()的调用为空”

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} }

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

我切换到SonataAdmin捆绑包,这提供了一种正确完成此操作的简便方法。