wt-health / laravel-json-schema-request
Like FormRequests, but for validating against a json-schema
Installs: 41 848
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 4
Forks: 2
Open Issues: 1
Requires
- php: ^8.2|^8.3
- illuminate/support: ^10.0|^11.0
- justinrainbow/json-schema: ^5.2
Requires (Dev)
- orchestra/testbench: ^v9.6.1
- phpunit/phpunit: ^11.4.0
- webtoolshealth/php-coding-standard: ^1.0
This package is auto-updated.
Last update: 2024-12-21 01:57:28 UTC
README
Laravels Form Request Validation for JSON Schema documents
Installation
composer require wt-health/laravel-json-schema-request
Usage
The development experience is identical to Laravel's Form Request Validation, except instead of writing Laravel validation rules, you write a JSON Schema.
You can create a new request using the make:json-request
command
artisan make:json-request MyJsonRequest
You will now have new request class App\Http\Requests\MyJsonRequest
, Below you can see a basic example schema.
<?php namespace App\Http\Requests; use Wthealth\JsonSchemaRequest\JsonSchemaRequest; class MyJsonRequest extends JsonSchemaRequest { public function schema(): array { return [ 'type' => 'object', 'properties' => [ 'first_name' => ['type' => 'string'], 'last_name' => ['type' => 'string'], 'email' => ['type' => 'string', 'format' => 'email'], ], 'required' => ['first_name', 'last_name', 'email'], 'additionalProperties' => false, ]; } }
Once you have a JsonSchemaRequest
object, all you need to do is type-hint the request on your controller method.
The incoming form request is validated before the controller method is called.
public function store(MyJsonRequest $request) { // The incoming request is valid... // Retrieve the validated input data... $validated = $request->validated(); }
License
The MIT License (MIT). Please see License File for more information.