HTTP Request
The Request class provides an object-oriented way to interact with the current HTTP request, including input data, headers, and file uploads.
Accessing The Request
Get the current request instance:
use Spark\Http\Request;
// In controller method
public function store(Request $request)
{
// Use request object
}
Using the helper function:
// Get entire request
$request = request();
// Get specific input value
$name = request('name', 'default');
// Get multiple inputs
$inputs = request(['name', 'email']);
Request Data
Retrieving Input
// Get query parameter
$id = $request->query('id');
// Get POST parameter
$name = $request->post('name');
// Get all input
$all = $request->all();
// Get filtered input
$filtered = $request->all(['name', 'email']);
Checking For Input
if ($request->hasQuery('page')) {
// Has query parameter
}
if ($request->hasPost('email')) {
// Has POST parameter
}
File Uploads
// Get uploaded file
$file = $request->file('avatar');
// Check if file exists
if ($request->hasFile('avatar')) {
// Process file
}
Request Information
// Get request method
$method = $request->getMethod();
// Get request path
$path = $request->getPath();
// Get full URL
$url = $request->getUrl();
// Get client IP
$ip = $request->ip();
Request Headers
// Get header
$header = $request->header('X-Custom-Header');
// Check content type
if ($request->accept('application/json')) {
// Client accepts JSON
}
Request Type
// Check request method
if ($request->isMethod('post')) {
// POST request
}
// Check AJAX request
if ($request->isAjax()) {
// AJAX request
}
// Check JSON expected
if ($request->expectsJson()) {
// Return JSON response
}
Input Validation & Sanitization
Request validation:
$attributes = $request->validate([
'name' => ['required'],
'email' => [required, 'email'
]]);
Using the validator helper:
try {
$sanitizer = validator([
'name' => 'required|string',
'email' => 'required|email'
]);
// Data is validated and sanitized
$email = $sanitizer->email('email');
$name = $sanitizer->text('name');
} catch (Exception $e) {
// Handle validation error
// $e->getMessage(); // the validation error message
}
Using the input helper:
// Get sanitized input
$inputSanitizer = input(['name', 'email']);
$name = $inputSanitizer->text('name');
// Get raw input
$rawInput = input(['name', 'email'], false);
$name = $rawInput['name'];
Route Parameters
// For route '/user/{id}'
$id = $request->getRouteParam('id');
// Check if parameter exists
if ($request->hasRouteParam('id')) {
// Parameter exists
}
Modifying Requests
// Set query parameter
$request->setQueryParam('page', 2);
// Set POST parameter
$request->setPostParam('status', 'active');
// Merge parameters
$request->mergePostParams(['role' => 'admin']);
Note: Request modifications only affect the current request instance and won't
change
actual superglobals.