Request Validation
About 183 wordsLess than 1 minute
Filterable can validate incoming data before an engine applies filters. Define standard Laravel validation rules in the filter class:
use Kettasoft\Filterable\Filterable;
class PostFilter extends Filterable
{
public function rules(): array
{
return [
'status' => ['sometimes', 'string', 'in:pending,active'],
'title' => ['sometimes', 'string', 'max:100'],
];
}
}Validation is part of the shared Filterable pipeline and therefore applies to all built-in engines:
Validation order
Class-level validation runs before payload sanitization and query application:
authorize → validate request → sanitize payload → filterValidation rules therefore inspect the incoming request value. Sanitizers may transform that value afterward, immediately before the engine applies its condition.
Handling failures
When validation fails, Laravel throws an Illuminate\Validation\ValidationException. API responses use Laravel's normal validation error format:
{
"message": "The given data was invalid.",
"errors": {
"status": ["The selected status is invalid."]
}
}Use sometimes for optional filters. Use required only when the endpoint must receive that filter on every request.
See Sanitization for preparing payload values before query application and Authorization for controlling access to a filter.
