riley19280/laravel-rules-to-schema

将Laravel验证规则解析为Json Schema

v0.5.0 2024-09-05 20:51 UTC

This package is auto-updated.

Last update: 2024-09-05 20:56:08 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

为您的Laravel规则创建json schema

先决条件

建议在您的应用程序中使用FormRequest类来使用此包。这允许轻松提取规则对象并将它们传递给此包。

您仍然可以通过传递规则数组来使用此包,但这稍微有些麻烦。

安装

您可以通过composer安装此包

composer require riley19280/laravel-rules-to-schema

并使用以下命令发布配置文件

php artisan vendor:publish --tag="laravel-rules-to-schema-config"

用法

use \Illuminate\Foundation\Http\FormRequest;

$schema = LaravelRulesToSchema::parse(FormRequest|array $rules): FluentSchema

$schema->compile(); // Returns an array representation of the json schema 

自定义

JSON Schema表示

此包依赖于riley19280/fluent-json-schema来构建和表示JSON schemas。有关如何使用和配置从规则解析器返回的对象的详细信息,请参阅该包的文档

为自定义规则注册模式

可以通过提供规则名称或类名称在配置文件中注册自定义规则的JSON Schema定义。

类型可以是任何简单的JSON Schema类型(数组、布尔值、整数、null、数字、对象、字符串)。如果需要更复杂类型,您可以提供实现LaravelRulesToSchema\Contracts\HasJsonSchema的类名称。

// config/rules-to-schema.php

'custom_rule_schemas' => [
    // \CustomPackage\CustomRule::class => \Support\CustomRuleSchemaDefinition::class,
    // \CustomPackage\CustomRule::class => 'string',
    // \CustomPackage\CustomRule::class => ['null', 'string'],
],

扩展规则解析器

如果您想进一步自定义或调整规则的解析方式,可以在配置文件中添加额外的解析器。每个解析器按照在配置文件中定义的顺序为每个规则运行。自定义解析器必须实现LaravelRulesToSchema\Contracts\RuleParser接口。

// config/rules-to-schema.php

'parsers' => [
    ...
    \CustomPackage\CustomParser::class,
],

面向包开发者的工具

如果您的包包含自定义规则,您还可以将类型作为包的一部分提供。

在服务提供者中,您可以使用以下方法以编程方式注册规则或解析器

LaravelRulesToSchema::registerCustomRuleSchema(CustomRule::class, CustomRuleSchemaDefinition::class);
LaravelRulesToSchema::registerParser(CustomParser::class);

变更日志

请参阅CHANGELOG以获取有关最近更改的更多信息。

贡献

请参阅CONTRIBUTING以获取详细信息。

安全漏洞

请参阅我们的安全策略以了解如何报告安全漏洞。

鸣谢

许可协议

MIT许可协议(MIT)。有关更多信息,请参阅许可文件