Validate geographic and linguistic data in Laravel requests.
ValidCountry- Validates country identifiersValidCurrency- Validates currency codesValidCity- Validates city namesValidLanguage- Validates language codes
use Ritechoice23\Worldable\Rules\ValidCountry;
$request->validate([
'country' => ['required', new ValidCountry()],
]);Accepts: 'Nigeria', 'NG', 'NGA', or 1
$request->validate([
'country' => [
'required',
(new ValidCountry())->withMessage('Please select a valid country'),
],
]);use Ritechoice23\Worldable\Rules\ValidCurrency;
$request->validate([
'currency' => ['required', new ValidCurrency()],
]);Accepts: 'USD', 'US Dollar', or 1
use Ritechoice23\Worldable\Rules\ValidCity;
$request->validate([
'city' => ['nullable', new ValidCity()],
]);Accepts: 'Lagos', 'New York', or 1
use Ritechoice23\Worldable\Rules\ValidLanguage;
$request->validate([
'language' => ['required', new ValidLanguage()],
]);Accepts: 'English', 'en', or 1
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Ritechoice23\Worldable\Rules\{ValidCountry, ValidLanguage};
class UpdateProfileRequest extends FormRequest {
public function rules(): array {
return [
'country' => ['required', new ValidCountry()],
'languages' => ['array'],
'languages.*' => [new ValidLanguage()],
];
}
public function messages(): array {
return [
'country.required' => 'Please select your country',
];
}
}$request->validate([
'countries' => ['required', 'array'],
'countries.*' => [new ValidCountry()],
]);$request->validate([
'locations' => ['required', 'array'],
'locations.*.country' => ['required', new ValidCountry()],
'locations.*.city' => ['required', new ValidCity()],
]);use Illuminate\Validation\Rule;
$request->validate([
'country' => [
'required',
new ValidCountry(),
'different:previous_country',
],
'currency' => [
'required',
new ValidCurrency(),
Rule::in(['USD', 'EUR', 'GBP']),
],
'languages' => [
'required',
'array',
'min:1',
'max:5',
],
'languages.*' => [new ValidLanguage()],
]);use Illuminate\Validation\Rule;
$request->validate([
'billing_country' => ['required', new ValidCountry()],
'shipping_country' => [
'required_if:needs_shipping,true',
new ValidCountry(),
],
'billing_city' => [
Rule::requiredIf(fn () => $request->billing_country === 'US'),
new ValidCity(),
],
]);