@BeConfigItem 注解
更新时间:2024年8月27日 10:55
浏览:414
@BeConfigItem 注解用于配置文件中的属性,添加此注解后,在配置页面,将自动增加此配置项的管理。
<?php
namespace Be\App\System\Config;
/**
* @BeConfig("用户")
*/
class User
{
/**
* @BeConfigItem("用户头像宽度",
* driver="FormItemInputNumberInt",
* description="单位:像素,修改后仅对此后上传的头像生效",
* ui="return [':min' => 1];")
*/
public int $avatarWidth = 96;
// ...
}
将自动生成以下配置界面:
注解格式:
- @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) {
// 禁止注册
}