Request validation helps check user input before saving or using it. It stops wrong or harmful data early.
Request validation basics in Laravel
public function store(Request $request)
{
$validated = $request->validate([
'field_name' => 'required|string|max:255',
'email' => 'required|email',
]);
// Use $validated data
}The validate method checks the rules and stops if input is invalid.
Rules are written as strings separated by pipes |.
$request->validate([
'username' => 'required|alpha_num|min:3|max:20',
]);$request->validate([
'age' => 'nullable|integer|min:18',
]);$request->validate([
'email' => 'required|email|unique:users,email',
]);This controller method checks the input for name, email, and password. It stops if any rule fails. If all pass, it returns a success message with the validated data.
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller { public function store(Request $request) { $validated = $request->validate([ 'name' => 'required|string|max:50', 'email' => 'required|email|unique:users,email', 'password' => 'required|string|min:6', ]); // Imagine saving user here return response()->json([ 'message' => 'User created successfully!', 'data' => $validated ]); } }
Validation errors automatically redirect back with messages in web apps.
You can customize error messages by passing a second array to validate.
Use Laravel's built-in rules to cover many common cases easily.
Request validation checks user input early to keep data safe and correct.
Use the validate method with rules to define what input is allowed.
Validation stops the request if input is wrong and shows helpful errors.
Practice
Solution
Step 1: Understand request validation role
Request validation checks user input before processing to avoid bad data.Step 2: Identify main goal
The main goal is to keep data safe and correct by stopping invalid input early.Final Answer:
To check user input early and ensure data is safe and correct -> Option AQuick Check:
Request validation = safe, correct input [OK]
- Thinking validation speeds up server
- Confusing validation with output formatting
- Assuming validation manages database connections
email as required and must be a valid email in a Laravel controller?Solution
Step 1: Recall Laravel validation syntax
Laravel uses pipe-separated strings for rules like 'required|email'.Step 2: Check each option
$request->validate(['email' => ['required', email]]);: syntax error ('email' not quoted in array). $request->validate(['email' => 'email||required']);: 'email||required' has empty invalid rule. $request->validate(['email' => 'required,email']);: uses comma which is invalid. $request->validate(['email' => 'required|email']);: correct pipe syntax.Final Answer:
$request->validate(['email' => 'required|email']); -> Option AQuick Check:
Pipe-separated rules = correct syntax [OK]
- Using commas instead of pipes
- Syntax errors in array rule lists
- Double pipes creating empty rules
public function store(Request $request) {
$validated = $request->validate([
'age' => 'required|integer|min:18'
]);
return $validated['age'];
}What will be the output if the request sends
age=20?Solution
Step 1: Understand validation rules
Field 'age' must be present, an integer, and minimum 18.Step 2: Check input value
Input age=20 meets all rules: present, integer, and >=18.Step 3: Determine output
Validation passes, so $validated['age'] returns 20.Final Answer:
20 -> Option DQuick Check:
Valid input returns value [OK]
- Assuming validation error for valid input
- Confusing min rule with max
- Expecting null when validation passes
public function update(Request $request) {
$request->validate([
'username' => 'required|min:5|max'
]);
}Solution
Step 1: Review validation rules syntax
Rules like 'min' and 'max' require a value after colon, e.g., 'max:10'.Step 2: Identify error in code
The 'max' rule is written without a value, which is invalid syntax.Final Answer:
The 'max' rule is missing a value, causing a syntax error -> Option BQuick Check:
Rules need values after colon [OK]
- Omitting values for min/max rules
- Using '=' instead of ':' in rules
- Calling validate on wrong object
password field is required, must be at least 8 characters, and must be confirmed by a matching password_confirmation field. Which validation rule set correctly enforces this?Solution
Step 1: Understand Laravel's confirmed rule
The 'confirmed' rule checks if a matching field with '_confirmation' suffix exists and matches.Step 2: Check each option
['password' => 'required|min:8|confirmed'] uses 'confirmed' with 'min:8' and 'required' on password only, which is correct. ['password' => 'required|min:8', 'password_confirmation' => 'required'] requires password_confirmation but does not check matching. ['password' => 'required|confirmed', 'password_confirmation' => 'min:8'] misplaces min:8 on confirmation. ['password' => 'required|min:8', 'password_confirmation' => 'same,password'] uses invalid 'password' rule.Final Answer:
['password' => 'required|min:8|confirmed'] -> Option CQuick Check:
Use 'confirmed' rule for password confirmation [OK]
- Forgetting to add 'confirmed' rule
- Validating confirmation field separately
- Using 'same' instead of 'confirmed' rule
Ready to prove it?
Pass the test and this pattern moves unknown
