Form Requests
Validatable classes can be injected directly into the form request validator method using Laravel's dependency injection.
Validatable class
php
<?php
declare(strict_types=1);
namespace App\Validation;
use LaraPkgs\Validation\Support\Facades\Validatable;
use LaraPkgs\Validation\Validatable as BaseValidatable;
use LaraPkgs\Validation\ValidatableCollection;
final class UserValidation extends BaseValidatable
{
protected function makeValidatableCollection(): ValidatableCollection
{
return Validatable::collection(
Validatable::item('name')->required()->string(),
Validatable::item('email')->required()->string()->email(),
);
}
}More information on validatable classes can be found here.
FormRequest
php
<?php
declare(strict_types=1);
namespace App\Http\Requests;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Foundation\Http\FormRequest;
use App\Validation\UserValidation;
final class UserRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
protected function validator(UserValidation $validatable): Validator
{
return $validatable->makeValidator($this->validationData());
}
}Controller
php
<?php
declare(strict_types=1);
namespace App\Http\Controllers;
use App\Http\Requests\UserRequest;
use Illuminate\Http\JsonResponse;
final class UserController extends Controller
{
public function __invoke(UserRequest $request): JsonResponse
{
return response()->json([
'status' => 'success',
'data' => $request->validated(),
]);
}
}