We use request data to get information users send to our app, like form inputs or URL details.
Accessing request data in Laravel
<?php
use Illuminate\Http\Request;
public function example(Request $request) {
$value = $request->input('key');
// or
$value = $request->get('key');
// or
$value = $request->query('key');
// or
$value = $request->post('key');
}$request->input('key') gets data from any input source (query, post, json).
$request->query('key') gets only query string parameters.
<?php $name = $request->input('name');
<?php $page = $request->query('page', 1);
<?php
$email = $request->post('email');<?php $allData = $request->all();
This controller method gets 'username' and 'email' from the request and returns them as a string.
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controller { public function store(Request $request) { $username = $request->input('username'); $email = $request->input('email'); return "Username: $username, Email: $email"; } }
Always validate request data before using it to keep your app safe.
You can provide a default value as a second argument to input() if the key might be missing.
Use $request->all() carefully; it returns all input data which might be large or sensitive.
Use $request->input('key') to get user data from forms or URLs.
Use specific methods like query() or post() to get data from certain parts of the request.
Always check and clean request data before using it in your app.
Practice
Solution
Step 1: Understand Laravel request input methods
Theinput()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, anddata()does not exist.Final Answer:
$request->input('key') -> Option DQuick Check:
Use input() to get any request data [OK]
- 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
Solution
Step 1: Identify method for query parameters
Laravel providesquery()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 BQuick Check:
Use query() for URL parameters [OK]
- Using post() to get query parameters
- Using route() which is for route parameters
- Using request('page') which does not exist
/search?term=laravel and the form sends a POST field term=php?
public function search(Request $request) {
return $request->input('term');
}Solution
Step 1: Understand input() method behavior
Theinput()method returns POST data first if available, then falls back to query parameters.Step 2: Analyze given request data
The POST fieldterm=phpexists, soinput('term')returns 'php' ignoring the query parameter.Final Answer:
php -> Option CQuick Check:
input() prefers POST over query [OK]
- Assuming query parameter overrides POST data
- Expecting null if both exist
- Confusing input() with query()
public function store(Request $request) {
$email = $request->postEmail();
return $email;
}Solution
Step 1: Check method existence
Laravel's Request class does not have a method namedpostEmail(). 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 AQuick Check:
Use post('key') or input('key'), not postEmail() [OK]
- Calling non-existent methods like postEmail()
- Confusing query() with post() for POST data
- Ignoring validation but that is not the error here
Solution
Step 1: Use dot notation with input()
Laravel supports dot notation ininput()to access nested data safely with a default value.Step 2: Analyze other options
B uses validget()but unsafe array access if 'user' missing, C usesquery()which only reads URL params, D usesinput('user')which may be null leading to array access error.Final Answer:
$city = $request->input('user.address.city', 'Unknown'); -> Option AQuick Check:
Use input('nested.key', default) for nested safe access [OK]
- 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
Ready to prove it?
Pass the test and this pattern moves unknown
