Yii 模型

17 Mar 2025 | 4 分钟阅读

模型是 MVC 结构的一部分。它们代表了应用程序的规则和逻辑。 意味着它们保存数据并定义数据的验证规则。

模型类由 yii\base\Model 或其子类扩展。

主要使用模型实现以下功能。

  • 属性声明
  • 属性标签
  • 大规模属性赋值
  • 基于场景的验证
  • 无法嵌入 HTML
  • 无法直接访问

属性

属性主要代表业务数据。每个属性都是模型的一个可公开访问的属性。它们可以像数组元素或普通对象属性一样被访问。 就像模型的可公开访问的属性一样。

方法,

指定模型类具有哪些属性。

模型类也是 ActiveRecord 类的基类(这是一个具有附加功能的高级模型)。

作为普通对象属性的属性

在 Yii 的早期版本中,场景和验证使用相同的函数处理。 但在 Yii2 中,它们被分成不同的函数,即:rules() 和 scenarios()。

在这里,rules() 指定数据的验证,而 scenarios() 指定哪些属性可以安全地分配给模型。


属性标签

属性标签是与属性一起显示以获取用户输入的数值。

例如,在下面的代码中,ID、Name、Designation、Contact 和 Email 表示属性标签。 所有这些都在一个函数 attributeLabels() 下定义。

YII Models 1

看看上面的快照,标题数据表示属性标签。

场景

一个模型可以用于不同的场景。 例如,一个模型可以用于收集登录用户的输入,而它也可以用于收集新用户的注册输入。 因此,在不同的场景中,一个模型可以使用不同的规则和逻辑。

示例

这是 ContactForm.php 代码,

SiteController.php 文件中创建一个动作 actionContact

现在,我们将在浏览器中运行该程序,

YII Models 2

现在将 SiteController.php 中的 actionContact 中的场景更改为

现在在浏览器中运行程序时,主题和正文字段将不再是必填字段。

YII Models 3

验证规则

这些是为字段设置的规则,供用户填写。 例如,required 规则将确保相应的字段不为空。 并且电子邮件属性将确保输入的电子邮件是有效的电子邮件。 如果值不满足规则,屏幕上将显示一条错误消息。

要为所有场景中的所有字段声明验证规则,请使用以下代码。

on 属性实现的是,规则将应用于特定场景。 如果您不使用 on 属性,则默认情况下规则将应用于所有字段。


大规模赋值

在大规模赋值中,使用一行代码填充模型,其中包含用户输入。 大规模赋值仅适用于安全属性。

看看以下两种代码,它们都将最终用户提交的表单数据分配给 ContactForm 模型的属性。

第一个是,

第一个使用大规模赋值的更容易、整洁且不易出错。

下一主题YII 视图