Validation is an important component of any web application since it ensures that the data received from the user is correct and in the desired format. Laravel, a popular PHP web application framework, makes validation simple and straightforward. In this post, we’ll go over the various validation methods available in Laravel and show you how to use them.
Laravel provides a built-in feature called Form Request Validation, which allows you to create a separate class for validation rules. The class is then used to validate the incoming request data before it is passed to the controller method. Here’s an example of how to use Form Request Validation:
class StoreBlogPost extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'title' => 'required|min:3|max:255',
'body' => 'required|min:10',
];
}
}
In the above example, we have created a class called StoreBlogPost
that extends the FormRequest
class. The authorize()
method returns true, which means that the request is authorized, and the rules()
method returns an array of validation rules for the title and body fields.
Laravel provides several validation helper functions that can be used to validate incoming request data. Here’s an example of how to use the validate()
helper function:
$validatedData = request()->validate([
'title' => 'required|min:3|max:255',
'body' => 'required|min:10',
]);
In the above example, we are using the validate()
helper function to validate the incoming request data for the title and body fields. The function returns the validated data, which can then be used in the controller method.
Laravel allows you to create custom validation rules, which can be reused across the application. Here’s an example of how to create a custom validation rule:
class UniqueSlugRule
{
public function validate($attribute, $value, $parameters, $validator)
{
return !Blog::whereSlug($value)->exists();
}
}
In the above example, we have created a custom validation rule called UniqueSlugRule
that checks if the slug already exists in the blogs
table.
Laravel provides a way to create validation rules as objects, which allows for more complex validation logic. Here’s an example of how to create a rule object:
use Illuminate\Validation\Rule;
$validatedData = request()->validate([
'title' => ['required', Rule::unique('blogs')->ignore(Blog::find($id))],
'body' => 'required|min:10',
]);
In the above example, we are using the Rule
facade to create a rule object that checks if the title is unique in the blogs
table, ignoring the current blog post.
Laravel also allows you to validate data using the Validator
facade. This method allows for more flexibility and control over the validation process. Here’s an example of how to use the Validator
facade:
use Validator;
$validator = Validator::make(request()->all(), [
'title' => 'required|min:3|max:255',
'body' => 'required|min:10',
]);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput();
}
In the above example, we are using the make()
method of the Validator
facade to create a new validator instance. The first argument is the data to be validated, and the second argument is the validation rules. We then check if the validation fails by calling the fails()
method, and if it does, we redirect the user back with the errors and input.
Conclusion
Any web application must do validation, and Laravel offers various techniques for doing so. The process is straightforward and uncomplicated, regardless of whether you use Form Request Validation, helper functions, personalized validation rules, rule objects, or the Validator facade. We hope that this post has given you a thorough overview of validation in Laravel and some practical examples to use it in your own projects.
Leave a Reply