filisko / redbean-validation-plugin
RedBeanPHP 模型验证插件
Requires
- gabordemooij/redbean: >=4.1
- wixel/gump: ^1.3
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 异常。