Skip to content

Validation & form requests

Inline validation

typescript
import { validateRequest } from '@tyravel/validation';

const data = await validateRequest(request, {
  email: 'required|email',
  age: 'required|integer|min:18',
});

Failed validation returns HTTP 422 with an errors object.

Form requests

Form requests combine authorization and validation for controller actions:

typescript
import { FormRequest, Gate } from '@tyravel/core';

export class StoreUserRequest extends FormRequest<{ email: string; name: string }> {
  async authorize(): Promise<boolean> {
    return this.authorizePolicy('create', User);
  }

  rules() {
    return {
      email: ['required', 'email'],
      name: ['required', 'min_length:2'],
    };
  }
}

Wire into a route:

typescript
Route.post('/users', [UserController, 'store', StoreUserRequest]);

Generate a scaffold with tyravel make:request StoreUser.

Conditional rules

Use sometimes to validate a field only when it is present:

typescript
rules() {
  return {
    email: ['sometimes', 'email'],
    bio: ['sometimes', 'string', 'max:500'],
  };
}

Released under the MIT License.