【问题标题】:How to display string in property field instead of integer from database?如何在属性字段中显示字符串而不是数据库中的整数?
【发布时间】:2019-09-13 14:50:47
【问题描述】:

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

我试图覆盖 AdminController 并覆盖 createEditForm()createEntityFormBuilder() 等方法,但最终得到 "在 null 上调用成员函数 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} }

【问题讨论】:

  • 您是否尝试过覆盖模板?

标签: symfony4 symfony2-easyadmin php-7.3 easyadmin


【解决方案1】:

您可以尝试更改 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;
}

【讨论】:

  • 我知道这种可能性,但我忘了提到移动应用程序有 API,所以搞乱实体 setter 和 getter 会弄乱端点。目前我切换到SonataAdmin bundle,轻松解决问题。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 2017-10-29
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多