Sling Academy
Home/PHP/How to retrieve input data from request in Laravel: An example-driven guide

How to retrieve input data from request in Laravel: An example-driven guide

Last updated: January 15, 2024

Introduction

When building web applications with Laravel, managing incoming request data is a fundamental task that developers must handle. Laravel provides a powerful and elegant way to retrieve input data from HTTP requests. This guide will walk you through various methods available in Laravel to efficiently extract the data sent by clients to your application.

Prerequisites

  • Basic understanding of Laravel and MVC architecture
  • Laravel installation on your development machine. If you don’t have it yet, see this article: How to install Laravel on Windows and Mac.
  • A text editor or IDE
  • Composer globally installed

The Request Class

The primary tool for dealing with HTTP requests in Laravel is the Illuminate\Http\Request class, which provides numerous methods for identifying, validating, and extracting request data.

Accessing the Request Object

In any controller action, you can type-hint the request object like so:

public function store(Request $request)
{
    //
}

This will inject the current request instance into your method.

Retrieving Input Data

To retrieve data from the request, you can use a variety of methods provided by the request object. Let’s explore some of them.

All Input

$input = $request->all();

This method will return all input data from the request as an associative array.

Retrieving An Item

$name = $request->input('name');

You can also retrieve input data using the dynamic properties of the request object:

$name = $request->name;

For data that might not be present, you can define a default value:

$name = $request->input('name', 'Default Name');

Checking for Presence of Parameter

if ($request->has('name')) {
    //
}

This will return true if the request contains an item with the key 'name'.

Only Specific Data

$input = $request->only(['username', 'password']);

The above will return only specified data items, useful when you need a subset of the entire input.

Exclude Certain Data

$input = $request->except(['credit_card']);

On the contrary, except helps you get all the data except the specified keys.

Filtering & Validation

In many instances, it’s not just about retrieving input data but also ensuring its integrity and applicability for its intended use. Laravel provides robust validation tools that can be used directly within your controller methods or form request classes.

$validatedData = $request->validate([
    'title' => 'required|max:255',
    'body' => 'required',
]);

This snippet demonstrates quick inline request data validation using Laravel’s built-in validation rules.

Files & Uploads

Handling file uploads is a bit different from simple form data. The request object provides methods for this as well:

if ($request->hasFile('photo')) {
    $file = $request->file('photo');
    // Process the file...
}

Added to that, you can verify if the file is valid:

if ($request->file('photo')->isValid()) {
    //
}

Saving Uploaded Files

Laravel’s filesystem makes it easy to store uploaded files securely:

$path = $request->photo->store('images');

Advanced Usage

Laravel’s request class can cater to most use cases, but sometimes you’ll need to dive a bit deeper into the system’s functionality. This could be anything from transforming input data on-the-fly to more advanced file handling techniques.

Transforming Input Data

You might want to normalize or transform input data before running other operations. Middleware or form request classes can help you achieve this:

public function prepareForValidation()
{
    $this->merge([
        'slug' => Str::slug($this->slug),
    ]);
}

Conclusion

Retrieving and handling input data is crucial for any web application. Laravel provides a neat, fluent API to handle different types of inputs including advanced file handling and validation out of the box. With practice, the methods demonstrated here will be a valuable toolset in your Laravel development endeavors.

Next Article: Laravel: How to get request body

Previous Article: Laravel: How to Extract Auth Token from Request Headers

Series: Laravel & Eloquent Tutorials

PHP

You May Also Like

  • Pandas DataFrame.value_counts() method: Explained with examples
  • Constructor Property Promotion in PHP: Tutorial & Examples
  • Understanding mixed types in PHP (5 examples)
  • Union Types in PHP: A practical guide (5 examples)
  • PHP: How to implement type checking in a function (PHP 8+)
  • Symfony + Doctrine: Implementing cursor-based pagination
  • Laravel + Eloquent: How to Group Data by Multiple Columns
  • PHP: How to convert CSV data to HTML tables
  • Using ‘never’ return type in PHP (PHP 8.1+)
  • Nullable (Optional) Types in PHP: A practical guide (5 examples)
  • Explore Attributes (Annotations) in Modern PHP (5 examples)
  • An introduction to WeakMap in PHP (6 examples)
  • Type Declarations for Class Properties in PHP (5 examples)
  • Static Return Type in PHP: Explained with examples
  • PHP: Using DocBlock comments to annotate variables
  • PHP: How to ping a server/website and get the response time
  • PHP: 3 Ways to Get City/Country from IP Address
  • PHP: How to find the mode(s) of an array (4 examples)
  • PHP: Calculate standard deviation & variance of an array