ACF 核心原则

来自 Alpine Linux

虽然 mvc.lua 代码为任何基于 lua "mvc" 的应用程序提供了一个通用框架,但 "acf" 是使 mvc.lua 框架成为 Web 配置应用程序的组件。 此处讨论了关于应用程序范围设置的一些想法和理由。

cfe 的使用

cfe (Configuration Framework Entity,配置框架实体) 是一种在模型、控制器和视图之间以通用方式传递数据的方法。 有许多方法可以做到这一点(例如,闭包、AKClass); 使用 cfe 只是为了推动开发前进的任意决定。

cfe 是一个包含保证存在的字段的表。 它也是一种从以视图为中心的 HTML 输入类型中抽象出用户可修改数据的方法。 ACF 不一定仅限于 Web。 通过不同的控制器和视图,它可以是 cli(或 gui?!)。 acf-cli 应用程序就是这方面的一个例子。

所有 cfe 中的字段

cfe 由以下位置的函数构造mvc.lua该函数返回一个包含以下字段的匿名表

字段 默认值 描述
value "" cfe 的值(例如,IP 地址、主机名、密码等)
type "text" 实体的类型(见下文)
label "" 用户可读的值标签

预定义这些字段的原因是允许模型、控制器和视图使用索引,而无需首先检查它们是否存在。 例如,实体将始终具有值和类型。

cfe 可以有其他字段。 一些可能存在或可能不存在的常见字段

字段 描述
errtxt 解释验证失败原因的文本
option 此值的选项列表
descr 用户可读的值描述
seq 数字序列,建议 cfe 在组或表单中的显示顺序
default 默认值(可以向用户显示)
readonly 如果存在,则表示信息将显示,但不可编辑,通常在表单中使用

要设置字段或覆盖字段默认值,请在 cfe 构造函数的参数列表中指定一个表

mycfe = cfe({label="User", value="asdf", errtxt="Invalid User"})

等效于

mycfe = {label="User", value="asdf", type="text", errtxt="Invalid User"}

cfe 类型

cfe 的 type 字段可以是以下之一

type 描述 修饰符
text 文本字段,通常为单行文本
longtext 多行文本字段,例如 textarea
select 选择列表 value 是当前选定的项目
option 是选择选项的数组
multi 多选列表 value 是选定项目的数组
option 是选择选项的数组
list 列表 value 是字符串数组
boolean true 或 false
raw 原始二进制数据
form 构成表单的一组 cfe value 是构成表单的 cfe 表(该表应该是名称索引的)
option 是保存更改的命令名称(HTML 的按钮名称)
descrerrtxt 可能包含保存尝试的结果
group 构成匿名组的一组 cfe value 是分组的 cfe 表(可用于将多个项目传递给视图)(该表应该是名称索引的)
structure 没有进一步类型信息的 Lua 表
password 用户不应可读的密码
hidden 隐藏字段,通常包含 ACF 使用的信息,用户不可见

模型定义对象集

模型负责从正在运行的系统进行写入和读取。 模型通常不需要知道它在特定 acf 模块的哪个部分下运行。 模型不一定必须像系统的其余部分一样是 lua "oop"。(模型可能不需要知道 "self")

由于模型可以选择暴露系统多少或少,因此基本数据集应在模型中定义。