开发文档 v2.x

@BeConfigItem 注解

更新时间:2022年9月23日 14:06 浏览:145

@BeConfigItem 注解用于配置文件中的属性,添加此注解后,在配置页面,将自动增加此配置项的管理。

<?php
namespace Be\App\System\Config;

/**
 * @BeConfig("用户")
 */
class User
{

    /**
     * @BeConfigItem("用户头像宽度",
     *     driver="FormItemInputNumberInt",
     *     description="单位:像素,修改后仅对此后上传的头像生效",
     *     ui="return [':min' => 1];")
     */
    public int $avatarWidth = 96;

    // ...

}

 

将自动生成以下配置界面:

be-config-item.jpg

注解格式:

  • @BeConfigItem(参数名="参数值")
  • @BeConfigItem(参数名1="参数值1", 参数名2="参数值2", 参数名3="参数值3", ...)
  • 其中参数值中 以 “return ” 开头的字符串将以代码形式 取 eval 的结果。
  • 默认参数 label 可省略参数名. @BeConfigItem(label="xxx") -> @BeConfigItem("xxx")

 

使用:

$avatarWidth = Be::getConfig('App.System.User')->avatarWidth;

 

支持的参数:

  • label - 显示标签,可简写
  • description - 描述 
  • driver - 驱动
  • ... - 驱动参数,不同的驱动支持不同的参数

 

label - 显示标签

配置项展示的名称,可简写为 @BeConfigItem("xxx" ...

 

description - 描述 

配置项简单描述,展示在配置项的下方

 

driver - 驱动

配置项的驱动,即表单项驱动,当前版本已实现的驱动:

  • FormItemAutoComplete - 自动完成输入框
  • FormItemAvatar - 头像输入框
  • FormItemCheckbox - 多选框
  • FormItemCode - 代码输入器
  • FormItemColorPicker - 颜色选择器
  • FormItemCron - 计划任务时间选择器
  • FormItemCustom - 自定义
  • FormItemDatePicker - 日期选择器
  • FormItemDatePickerMonth- 日期选择器(月份)
  • FormItemDatePickerMonthRange - 日期选择器(月份范围)
  • FormItemDatePickerRange - 日期选择器(日期范围)
  • FormItemDateTimePicker - 日期时间选择器
  • FormItemDateTimePickerRange - 日期时间范围选择器
  • FormItemFile - 文件上传
  • FormItemImage - 图像上传
  • FormItemInput - 普通输入框
  • FormItemInputNumber - 数字输入框
  • FormItemInputNumberFloat - 浮点数输入框
  • FormItemInputNumberInt - 整型输入框
  • FormItemInputPassword - 密码输入框
  • FormItemInputTextArea - 多行输入框
  • FormItemMarkdown - Markdown 编辑器
  • FormItemMenu - 菜单
  • FormItemMenuPicker - 菜单项选择器
  • FormItemRadio - 单选框
  • FormItemRadioGroup- 单选框组
  • FormItemRadioGroupButton - 单选框组(按钮外观)
  • FormItemSelect - 下拉选择框
  • FormItemSlider - 拖动条
  • FormItemStorageFile - 存储系统文件选择器
  • FormItemStorageImage - 存储系统图像选择器
  • FormItemSwitch - 切换
  • FormItemTimePicker - 时间选择器
  • FormItemTimePickerRange - 时间范围选择器
  • FormItemTinymce - Tinymce 编辑器
  • FormItemTree - 树

 

驱动参数

不同的驱动支持不同的参数,如:

  • FormItemSelect 需要指定 keyValuse 键值对 填充下拉项
  • FormItemCode 需要指定 language 设置代码编辑器的语言
<?php
namespace Be\App\System\Config;

/**
 * @BeConfig("系统")
 */
class System
{

    // ...

    /**
     * @BeConfigItem("是否开启伪静态"
     *     driver = "FormItemSelect",
     *     keyValues = "return ['0' => '不启用', '1' => '简单', '2' => '路由器'];")
     */
    public string $urlRewrite = '0';

    // ...

    /**
     * @BeConfigItem("允许上传的图片类型", 
     *     driver="FormItemCode", 
     *     language="json", 
     *     valueType = "array(string)"
     * )
     */
    public array $allowUploadImageTypes = ['jpg', 'jpeg', ...];

    // ...

}

 

注解字段与无注解字段混用的情况:

<?php
namespace Be\App\System\Config;

/**
 * @BeConfig("用户")
 */
class User
{

    /**
     * @BeConfigItem("用户头像宽度",
     *     driver="FormItemInputNumberInt",
     *     description="单位:像素,修改后仅对此后上传的头像生效",
     *     ui="return [':min' => 1];")
     */
    public int $avatarWidth = 96;

    // ...

    // 是否启用注册功能
    public int $register = 0;

}

在上面的示例代码中,register 属性未设置注解,因此,该字段不会出现在配置界面中。也意味着它的值只能通过人工修改代码来变动。

if (Be::getConfig('App.System.User')->register === 0) {
  // 禁止注册
}

 

导航