Skip to content

字典功能

字典功能在后台一直是一个存在感很低的功能,尤其是前后端分离系统中。因为字典的数据在服务端,想要跟前端数据联动的话,需要对原始跟字段数据做一些标记。它最大的用处可能在生成代码的,为一些 Radio 组件或者 Select Switch 组件提供一些基础数据。如下 Catchadmin 专业版字典功能-Laravel Admin

扩展

当字典功能单独作为一个增删改查的功能,只能给前端生成页面提供一些基础数据的时候,其在后台的作用真的是非常小。但是在业务中又有很多地方用到这个。的确给定义一些选项提供了很大的方便,很大程度上保证了数据可以集中管理,不会那么分散。

但是在业务中,会有相当一部分逻辑判断会使用到字典的值。一旦需要使用到,很可能就是出现下面的代码

php
// 这里以 status 举例,有 1 和 2 两个状态
if ($model->status === 2) {}

这种代码在项目里如果大量出现的话,必定会是非常不可读的代码。会导致后期维护产生很多问题。所以以字典为枚举数据管理点,为字典自动生成枚举,提供给项目里面使用,最后会产生这样的代码

php
// 状态断言
if (Status::Enable->assert($model->status)) {}

这样的代码相较于之前有什么好处呢?

  • 可读写提高非常之多
  • 一旦 model->status === 2 大量出现在代码里,如果这个状态改变了,那么改动的地方非常至多,使用枚举,只需要改动枚举值即可

枚举生成

我们在字典功能提供了非常方便枚举生成功能

  • 自动生成
  • 对已有的枚举,会对字典内的值和当前枚举进行对比,如果不同,会覆盖生成

Catchadmin 专业版字典枚举生成-Laravel Admin

  • 列表操作的可以将列表所有字典数据生成枚举
  • 数据操作枚举可以生成对应字典的枚举类