filisko/redbean-validation-plugin

RedBeanPHP 模型验证插件

dev-master 2020-03-14 16:01 UTC

This package is auto-updated.

Last update: 2024-09-15 03:03:14 UTC


README

使用此插件,您将能够过滤和验证您的 RedBean 模型。为此,插件本身使用 GUMP,一个独立的数据验证和过滤 PHP 类,这意味着此插件需要它,但请放心,Composer 会处理此依赖关系。

安装

通过 composer 安装插件

composer require filisko/redbean-validation-plugin

使用 composer 安装插件后,您必须像这样将其加载到 RedBean 中

R::ext('validate', function($bean){
    return Filisko\RedBeanPHP\Plugin\ModelValidation::validate($bean);
});

在添加验证插件后,您可能会有类似以下内容:

R::setup('mysql:host=localhost;dbname=my_database','root', 'password');
R::freeze(TRUE);
R::ext('validate', function($bean){
    return Filisko\RedBeanPHP\Plugin\ModelValidation::validate($bean);
});

如何使用

这里重要的是 RedBean 必须能够“连接”豆子与该模型。在 RedBeanPHP 中将豆子连接到模型的机制称为 FUSE,因为豆子与其模型融合在一起。 了解更多关于 RedBean 模型

现在,重要的是要确保您的模型 包含规则,这些规则将由 GUMP 用于执行工作。

字段可用选项

label:此选项用于在错误中用标签替换字段名,而不是显示字段名,而是显示标签。

filter:此选项用于将任何过滤器应用于特定字段的值。

validation:此选项用于验证特定字段的值。

请参阅 GUMP GitHub 存储库 中提供的可用验证和过滤器。

message:此选项用于使用自定义错误消息,请记住,您必须非常清楚,因为对于任何验证失败,它都会显示此错误。

示例

一个 RedBean 模型及其规则的示例。请记住,您始终可以使用自己的模型,但 最重要的 是 RedBean 能够 FUSE(连接)您的 Bean 与您的模型,以便验证插件可以使用您模型中指定的规则使用 Bean。这可能听起来有点复杂,但下面的示例将展示它有多简单。

User.php

<?php
class User extends \RedBeanPHP\SimpleModel
{
    public static $rules = [
        'username' => [
            'label' => 'Username',
            'filter' => 'trim|sanitize_string',
            'validation' => 'required|alpha_numeric'
        ],
        'password' => [
            'label' => 'Password',
            'validation' => 'required|alpha_numeric|min_len,6'
        ],
    ];
}

使用“用户”Bean 并验证它的示例。

<?php
$user = R::load('user', 1); //  Load user from database with ID 1
$user->username = 'this_is_my_username'; // Change the username
$validation = R::validate($user); // The magic
// If $validation does not return true, then we have some errors, and $validation will return an array of these errors
if ($validation !== true)
{
    foreach ($validation as $field=>$message)
    {
        echo $message;
        echo "<hr>";
    }
}
else
{
    // If everything went OK just save it
    R::store($user);
}

因此,此示例的输出将是“用户名字段只能包含字母数字字符”,因为我们使用了下划线。

还请注意,如果验证通过,则将应用过滤器后保存值。您可以创建一个 GUMP 过滤器,如下所示

// Filter "upper" that will put the value in uppercase
\GUMP::add_filter("upper", function($value) {
    return strtoupper($value);
});

正如我之前所说的,我建议您查看 GUMP 存储库

异常

如果您尝试验证没有模型或验证规则的 Bean,则将抛出 ModelValidation_Exception 异常。