Session Blocks in Laravel: Explained with Examples

Updated: January 16, 2024 By: Guest Contributor Post a comment

Introduction to Laravel Session

Laravel offers a powerful session management system out of the box that allows for customizable and robust handling of session data. In this tutorial, we will explore the core concepts of session blocks in Laravel using a variety of examples from basic to advanced.

What are Session Blocks?

Session blocks in Laravel are a way to store and retrieve session data within your web application. They help to maintain user data between multiple requests. Laravel makes it easy to work with sessions through its facade Session, global helper method session(), and via request instances.

Starting with Laravel Sessions

Before you can use sessions in Laravel, you need to set up your environment. In your .env file, make sure to configure your session driver with options such as file, cookie, database, memcached/redis, and more.

SESSION_DRIVER=file

Once configured, you can begin using session functions.

Basic Usage of Sessions

Storing Data in Session

To store data in the session, use the put() method. Here’s a basic example:

use Illuminate\Support\Facades\Session;

Session::put('key', 'value');

You could also achieve the same result using the session() global helper function.

session(['key' => 'value']);

Retrieving Data from Session

Retrieving data is as simple as storing it:

$value = Session::get('key');

Or using the global helper:

$value = session('key');

Checking for Data Existence

To check if a piece of data exists in the session, use the has() method:

if (Session::has('key')) {
    // Do something
}

Session facade also provides the exists() method which is similar to has(), but has() only returns true if the item is present and not null.

Flashing Data to Session

Flashing data to the session means the data will only be available for the next request. This is useful for status messages:

Session::flash('status', 'Task was successful!');

Now, you can retrieve this message on the next HTTP call and show it to the user:

{{ session('status') }}

Deleting Data from Session

To remove data from the session, you can use the forget() or flush() methods:

Session::forget('key'); // Removes a specific key
Session::flush(); // Removes all data from the session

Advanced Session Usage

Let’s look at some more advanced features of Laravel sessions.

Storing Data for Only the Current Request

Using the flash() method, you can store items in the session that will only be available for a single request.

request()->session()->flash('status', 'This is a one-time message!');

This data will not be carried over to subsequent requests.

Incrementing & Decrementing Session Values

Laravel session also supports incrementing and decrementing numerical session values:

Session::increment('count');
Session::increment('count', $incrementBy);
Session::decrement('count');
Session::decrement('count', $decrementBy);

Saving Data to the Session Automatically

Laravel’s session driver automatically serializes the session data and writes it at the end of the web request. If you need to manually persist the session data immediately, use the save() method.

Session::save();

Conclusion

In this tutorial, we’ve walked through the major functionalities of Laravel’s session management. Using these examples, you should be able to effectively handle session data in your Laravel applications to create sophisticated user experiences.