Examples
Real-world code samples for WPZylos Validation.
User Registration
class UserRegistrationValidator
{
public function validate(array $data): array
{
$validator = new Validator($data, [
'username' => ['required', 'string', 'min:3', 'max:50', 'alpha_dash'],
'email' => ['required', 'email'],
'password' => ['required', 'min:8', 'confirmed'],
'terms' => ['accepted'],
], [
'username.required' => 'Please choose a username.',
'username.min' => 'Username must be at least 3 characters.',
'email.email' => 'Please enter a valid email address.',
'password.min' => 'Password must be at least 8 characters.',
'password.confirmed' => 'Passwords do not match.',
'terms.accepted' => 'You must accept the terms of service.',
]);
if ($validator->fails()) {
throw new ValidationException($validator->errors());
}
return $validator->validated();
}
}
Settings Form
class SettingsValidator
{
public function validate(array $data): array
{
$validator = new Validator($data, [
'site_name' => ['required', 'string', 'max:100'],
'admin_email' => ['required', 'email'],
'posts_per_page' => ['required', 'integer', 'min:1', 'max:100'],
'timezone' => ['required', 'in:UTC,America/New_York,Europe/London'],
'enable_comments' => ['boolean'],
'logo_url' => ['nullable', 'url'],
]);
if ($validator->fails()) {
return [
'success' => false,
'errors' => $validator->errors()->toArray(),
];
}
return [
'success' => true,
'data' => $validator->validated(),
];
}
}
Product Form
class ProductValidator
{
public function rules(): array
{
return [
'name' => ['required', 'string', 'max:255'],
'sku' => ['required', 'alpha_dash', 'max:50'],
'price' => ['required', 'numeric', 'min:0'],
'sale_price' => ['nullable', 'numeric', 'min:0'],
'stock' => ['required', 'integer', 'min:0'],
'category_id' => ['required', 'integer'],
'description' => ['nullable', 'string', 'max:5000'],
'tags' => ['nullable', 'array'],
'tags.*' => ['string', 'max:50'],
'images' => ['nullable', 'array', 'max:10'],
'images.*' => ['url'],
];
}
public function validate(array $data): array
{
$validator = new Validator($data, $this->rules());
// Custom validation
if (!empty($data['sale_price']) && $data['sale_price'] >= $data['price']) {
$validator->errors()->add('sale_price', 'Sale price must be less than regular price.');
}
if ($validator->fails()) {
throw new ValidationException($validator->errors());
}
return $validator->validated();
}
}
API Request Validation
class ApiRequestValidator
{
public function validateCreateOrder(array $data): array
{
return $this->validate($data, [
'customer_id' => ['required', 'integer'],
'items' => ['required', 'array', 'min:1'],
'items.*.product_id' => ['required', 'integer'],
'items.*.quantity' => ['required', 'integer', 'min:1'],
'shipping_address' => ['required', 'array'],
'shipping_address.street' => ['required', 'string'],
'shipping_address.city' => ['required', 'string'],
'shipping_address.zip' => ['required', 'string'],
'shipping_address.country' => ['required', 'string', 'size:2'],
'notes' => ['nullable', 'string', 'max:1000'],
]);
}
}