📖 Scenario: You are building a simple Laravel web application where users can submit their contact information through a form. To keep the data clean and safe, you need to validate the user input before saving it.
🎯 Goal: Build a Laravel controller method that validates a request with specific rules for name, email, and age fields.
📋 What You'll Learn
Create a controller method named store that accepts a Request object
Add validation rules for name, email, and age fields
Use Laravel's $request->validate() method for validation
Return the validated data as an array
💡 Why This Matters
🌍 Real World
Validating user input is essential in web applications to ensure data integrity and security before processing or saving it.
💼 Career
Understanding Laravel request validation is a key skill for backend developers working with Laravel to build robust and secure web applications.
Progress0 / 4 steps
1
Create the store method with a Request parameter
Create a public method called store inside a controller class that accepts a parameter named $request of type Request.
Laravel
Hint
Define a public function named store that takes Request $request as input.
2
Define validation rules array
Inside the store method, create a variable named $rules that is an array with these exact keys and values: 'name' => 'required|string|max:255', 'email' => 'required|email', and 'age' => 'nullable|integer|min:18'.
Laravel
Hint
Use an associative array with keys name, email, and age and their validation rules as strings.
3
Validate the request using $request->validate()
Use the $request->validate() method with the $rules array to validate the incoming data inside the store method. Store the result in a variable named $validatedData.
Laravel
Hint
Call $request->validate($rules) and assign the result to $validatedData.
4
Return the validated data
At the end of the store method, return the $validatedData variable.
Laravel
Hint
Use return $validatedData; to send back the validated input.
Practice
(1/5)
1. What is the main purpose of request validation in Laravel?
easy
A. To check user input early and ensure data is safe and correct
B. To speed up the server response time
C. To format the output HTML automatically
D. To connect to the database securely
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 A
Quick Check:
Request validation = safe, correct input [OK]
Hint: Validation protects data by checking input early [OK]
Common Mistakes:
Thinking validation speeds up server
Confusing validation with output formatting
Assuming validation manages database connections
2. Which of the following is the correct syntax to validate a request field named email as required and must be a valid email in a Laravel controller?
easy
A. $request->validate(['email' => 'required|email']);
B. $request->validate(['email' => 'email||required']);
C. $request->validate(['email' => 'required,email']);
D. $request->validate(['email' => ['required', email]]);
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 A
Quick Check:
Pipe-separated rules = correct syntax [OK]
Hint: Use pipes '|' to separate validation rules in strings [OK]
Common Mistakes:
Using commas instead of pipes
Syntax errors in array rule lists
Double pipes creating empty rules
3. Given this Laravel controller code snippet:
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?
medium
A. Validation error: age is required
B. Validation error: age must be at least 18
C. null
D. 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 D
Quick Check:
Valid input returns value [OK]
Hint: Valid input passes and returns validated data [OK]
Common Mistakes:
Assuming validation error for valid input
Confusing min rule with max
Expecting null when validation passes
4. Identify the error in this Laravel validation code:
public function update(Request $request) {
$request->validate([
'username' => 'required|min:5|max'
]);
}
medium
A. The 'required' rule cannot be combined with 'min'
B. The 'max' rule is missing a value, causing a syntax error
C. The 'min' rule should be 'min=5' instead of 'min:5'
D. The validate method should be called on the controller, not the request
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 B
Quick Check:
Rules need values after colon [OK]
Hint: Always provide values for min/max rules after colon [OK]
Common Mistakes:
Omitting values for min/max rules
Using '=' instead of ':' in rules
Calling validate on wrong object
5. You want to validate a request in Laravel where the 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?
hard
A. ['password' => 'required|confirmed', 'password_confirmation' => 'min:8']
B. ['password' => 'required|min:8', 'password_confirmation' => 'required']
C. ['password' => 'required|min:8|confirmed']
D. ['password' => 'required|min:8', 'password_confirmation' => 'same,password']
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 C
Quick Check:
Use 'confirmed' rule for password confirmation [OK]
Hint: Use 'confirmed' rule to check matching confirmation field [OK]
Common Mistakes:
Forgetting to add 'confirmed' rule
Validating confirmation field separately
Using 'same' instead of 'confirmed' rule
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.