Skip to main content
Version: 1.x

Validation

Introduction

Lunox has builtin validation system, it's can validate your applicatoin's incoming data through Http Request. The common way is using validate method available on Http Request instance.

Writing Validation Logic

Take an example, we have some method on Controller. We want to validate the incoming request data to it. Note that validate method is asynchronous.

class UserController extends Controller {
async store(req){
await req.validate([
'title' => 'required|unique:posts,title|maxLength:255'.
'body' => 'required'
])
}
}

When validation fails, ValidationException will thrown.

Validation Rules

Under the hood, Lunox use node-input-validator. So, we can use all available rules here plus additional rule like unique and mimes.

Extending Rules

Writing Custom Rules

Rule is just object with interface of Rule from Validation contracts.

import type { Rule } from "lunox/dist/Contracts/Validation";

const Even: Rule = {
name: "even",
passes: async (args, value) => {
return value % 2;
},
message: "The :attr must be an even number.",
};

export default Even;

Registering Custom Rules

We can extend validation rules using method extend from Validation facade on boot method of ServiceProvider.

import {Validator} from "lunox";
import Even from "./Rules/Even";
import Mimes from "./Rules/Mimes";

class AppServiceProvider extends ServiceProvider {
async register() {
//
}
async boot() {
Validator.extend(Even);
}
}

Then we can use it in our validation

await req.validate([
'total' => 'required|even'
]);