📖 Scenario: You are building a simple Laravel web application that receives user input from a form. You need to access the data sent by the user through an HTTP request and process it in your controller.
🎯 Goal: Learn how to access request data in a Laravel controller using the Request object.
📋 What You'll Learn
Create a Laravel controller method that receives a request
Access specific input data from the request
Use a helper variable to store a key name
Return a response with the accessed data
💡 Why This Matters
🌍 Real World
Accessing request data is essential for handling user input in web applications, such as forms, API calls, and user interactions.
💼 Career
Understanding how to retrieve and use request data is a fundamental skill for backend developers working with Laravel or similar frameworks.
Progress0 / 4 steps
1
Create a controller method with a Request parameter
Create a public method called store inside a controller class named UserController. The method should accept a parameter named $request of type Illuminate\Http\Request.
Laravel
Hint
Remember to import the Request class and define the method inside the controller class.
2
Add a helper variable for the input key
Inside the store method, create a variable called $inputKey and set it to the string 'username'.
Laravel
Hint
Use a simple assignment statement to create the variable.
3
Access the input data from the request
Inside the store method, use the $request object and the input method with the variable $inputKey to get the user input. Store this value in a variable called $username.
Laravel
Hint
Use the input method on the $request object with the key variable.
4
Return a response with the accessed username
Inside the store method, return a response using the response() helper that returns the string 'Username: ' concatenated with the $username variable.
Laravel
Hint
Use the response() helper function to return a string response.
Practice
(1/5)
1. In Laravel, which method is commonly used to retrieve input data from a request regardless of HTTP method?
easy
A. $request->data('key')
B. $request->post('key')
C. $request->all()
D. $request->input('key')
Solution
Step 1: Understand Laravel request input methods
The input() method retrieves input data from the request regardless of HTTP method (GET, POST, etc.).
Step 2: Compare other methods
post() only retrieves POST data, all() returns all input data, and data() does not exist.
Final Answer:
$request->input('key') -> Option D
Quick Check:
Use input() to get any request data [OK]
Hint: Use input() to get any request data easily [OK]
Common Mistakes:
Confusing input() with post() which only gets POST data
Using all() when only one key is needed
Trying to use data() which does not exist
2. Which of the following is the correct syntax to get a query parameter named 'page' from a Laravel request?
easy
A. $request->post('page')
B. $request->query('page')
C. $request->route('page')
D. $request->request('page')
Solution
Step 1: Identify method for query parameters
Laravel provides query() method to specifically get data from URL query parameters (GET data).
Step 2: Check other options
post() gets POST data, route() gets route parameters, request() is not a retrieval method.
Final Answer:
$request->query('page') -> Option B
Quick Check:
Use query() for URL parameters [OK]
Hint: Use query() to get URL parameters only [OK]
Common Mistakes:
Using post() to get query parameters
Using route() which is for route parameters
Using request('page') which does not exist
3. Given the following Laravel controller code, what will be the output if the request URL is /search?term=laravel and the form sends a POST field term=php?
public function search(Request $request) {
return $request->input('term');
}
medium
A. null
B. laravel
C. php
D. term
Solution
Step 1: Understand input() method behavior
The input() method returns POST data first if available, then falls back to query parameters.
Step 2: Analyze given request data
The POST field term=php exists, so input('term') returns 'php' ignoring the query parameter.
Final Answer:
php -> Option C
Quick Check:
input() prefers POST over query [OK]
Hint: input() prefers POST data over query parameters [OK]
Common Mistakes:
Assuming query parameter overrides POST data
Expecting null if both exist
Confusing input() with query()
4. Identify the error in this Laravel code snippet that tries to get a POST field named 'email':
public function store(Request $request) {
$email = $request->postEmail();
return $email;
}
medium
A. Method postEmail() does not exist
B. Should use $request->input('email') instead
C. Missing validation before accessing email
D. Should use $request->query('email') for POST data
Solution
Step 1: Check method existence
Laravel's Request class does not have a method named postEmail(). This causes a runtime error.
Step 2: Correct method usage
To get POST data, use $request->post('email') or $request->input('email').
Final Answer:
Method postEmail() does not exist -> Option A
Quick Check:
Use post('key') or input('key'), not postEmail() [OK]
Hint: Use post('key') not postKey() method [OK]
Common Mistakes:
Calling non-existent methods like postEmail()
Confusing query() with post() for POST data
Ignoring validation but that is not the error here
5. You want to safely get a nested input value 'user.address.city' from a Laravel request and provide a default 'Unknown' if it does not exist. Which code snippet correctly does this?
hard
A. $city = $request->input('user.address.city', 'Unknown');
B. $city = $request->get('user')['address']['city'] ?? 'Unknown';
C. $city = $request->query('user.address.city') ?: 'Unknown';
D. $city = $request->input('user')['address']['city'] ?? 'Unknown';
Solution
Step 1: Use dot notation with input()
Laravel supports dot notation in input() to access nested data safely with a default value.
Step 2: Analyze other options
B uses valid get() but unsafe array access if 'user' missing, C uses query() which only reads URL params, D uses input('user') which may be null leading to array access error.
Final Answer:
$city = $request->input('user.address.city', 'Unknown'); -> Option A
Quick Check:
Use input('nested.key', default) for nested safe access [OK]
Hint: Use input('nested.key', default) for nested values [OK]
Common Mistakes:
Trying to access nested arrays without checking existence
Unsafe manual array access after get('user') or input('user')
Using query() which only reads URL parameters
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.