📜  Yii-验证(1)

📅  最后修改于: 2023-12-03 14:48:40.995000             🧑  作者: Mango

Yii 验证

Yii 是一个流行的 PHP Web 框架,提供了强大的验证器,帮助开发者在应用程序中快速、简便地进行数据校验和格式化。

在本文中,我们将讨论 Yii 的验证器及其用法,以便开发者们更好地使用它。

基础使用

我们可以使用 Gii 轻松地生成模型代码,模型代码中已经包括了一些基础验证规则。你也可以在模型类中使用如下方式添加其他验证规则:

public function rules()
{
    return [
        [['username', 'email'], 'required'],
        ['email', 'email'],
        ['username', 'unique'],
    ];
}

上面的代码将进行如下的验证:

  • username 和 email 字段是必填的
  • email 字段必须是有效的邮件格式
  • username 字段必须是唯一的

我们还可以在视图模板中调用模型的 getErrors() 方法来显示错误信息:

<?= $form->field($model, 'username')->textInput() ?>
<?= $form->field($model, 'email')->textInput() ?>
<?= $form->field($model, 'password')->passwordInput() ?>

<?php if ($model->hasErrors()): ?>
    <div class="alert alert-danger">
        <?= $form->errorSummary($model) ?>
    </div>
<?php endif ?>
高级使用

在某些情况下,我们需要更复杂的验证规则。Yii 提供了许多内置的验证器,同时还可以自定义验证器。下面是一系列内置的验证器:

  • compare: 比较两个属性的值,例如密码和确认密码。
  • default: 如果属性为空,则使用默认值。
  • each: 如果属性是数组,对其进行迭代。
  • email: 验证属性是否为有效的电子邮件地址。
  • exist: 验证属性值在给定表中是否存在。
  • file: 验证属性是否为有效的文件对象。
  • image: 验证属性是否为有效的图像对象。
  • in: 验证属性值是否在给定列表中。
  • match: 验证属性的值是否匹配给定的正则表达式。
  • number: 验证属性是否为数字类型,或者可以被转换为数字。
  • required: 验证属性是否为必填字段。
  • string: 验证属性是否为字符串类型。
  • safe: 确保属性为安全类型,防止 CSRF 攻击。
  • unique: 验证属性值在给定表中是否唯一。

下面是自定义验证器的示例:

public function rules()
{
    return [
        ['code', 'validateCode'],
    ];
}

public function validateCode($attribute, $params)
{
    if ($this->$attribute !== '1234') {
        $this->addError($attribute, 'Invalid code.');
    }
}

在上面的代码中,我们使用了一个自定义验证器 validateCode 来检查输入的验证码是否正确。

总结

Yii 框架提供了丰富的验证器,可以帮助开发者快速、简便地进行数据校验和格式化。在使用时,需要根据不同的需求选择合适的验证规则,在必要时还可以自定义验证器。

以上是 Yii 的验证器介绍,希望能够帮助开发者更好地使用 Yii 框架开发 Web 应用程序。