Controllers
Validatable classes can be injected directly into controller action methods 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.
Controller
php
<?php
declare(strict_types=1);
namespace App\Http\Controllers;
use App\Validation\UserValidation;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
final class UserController extends Controller
{
public function __invoke(Request $request, UserValidation $validatable): JsonResponse
{
$validated = $validatable->validate($request->all());
return response()->json([
'status' => 'success',
'data' => $validated,
]);
}
}