编写 ACF 模型
模型提供了 ACF 的核心功能。模型可以读取和写入文件、启动应用程序,以及执行任何其他必要的操作来实现所需的功能。通常,模型提供修改系统配置和启动/停止服务的能力。
模型基础
模型应实现提供其特定用途的所有应用程序功能的函数。模型的作用范围应限于特定目的 - 即管理特定服务。控制器将调用模型函数来实现用户请求的操作。
输入
模型函数输入特定于该函数。模型可以访问所有常见的 Lua 库。modelfunctions 库专门设计用于模型,并处理一些常用功能。
处理表单
模型中的常见功能之一是编辑某些系统变量。为了与控制器(特别是 controllerfunctions.handle_form 函数)良好协作,模型应实现一对 get/set 或 read/write 函数。get 函数将创建一组 cfe,描述参数并包含其当前值。set 函数将期望接收同一组 cfe,其中包含要设置的新值。get 和 set 函数都应验证值并填写 cfe errtxt 字段。set 函数应设置所有变量或不设置任何变量,并且如果设置失败,则应填写组 cfe errtxt 字段。对于创建新对象,可以遵循相同的模式,get 函数返回空值。
高级
加载其他控制器
在编写一些更高级或更高级别的模型时,设计者可能需要使用已在另一个控制器/模型中实现的功能。模型不应重新实现该功能,而应加载现有控制器并直接调用控制器或模型函数。由于模型不使用 dispatch 函数,因此对该控制器的访问超出了应用程序的权限检查范围。
local versioncontroller = self:new("alpine-baselayout/alpineversion") local versionresult = versioncontroller:read() -- Here's how you call the model directly local modelresult = versioncontroller.model:get()