Laravel: How to render a PHP array with Blade

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

Introduction

In web development, rendering data on the front end is a common task. This is especially true in Laravel, a popular PHP framework known for its elegant syntax and useful features. The templating engine used by Laravel is Blade, which offers a simple yet powerful way of displaying data. In this guide, we’ll explore how to render a PHP array using Blade, from the basics to more advanced techniques.

Understanding Blade Syntax with Arrays

Before diving into rendering arrays, it’s important to understand Blade’s syntax. Blade templates use a mixture of HTML and Blade directives – the latter being easily recognizable by their @ prefix. Views in Laravel are stored in the resources/views directory and have the .blade.php file extension.

Rendering Basic Arrays

To begin, let’s explore how to render a basic PHP array in Blade:

{!! $arrayVariable !!}

This will output the array as a string, which might not be what you want. Instead, you might choose to loop through the array, which can be done with the @foreach directive:

@foreach ($arrayVariable as $item)
    <li>{{ $item }}</li>
@endforeach

This code would produce a list of items on the webpage, with each array element as a list item.

Displaying Associative Arrays

When dealing with associative arrays, Blade provides a clean way to access each key-value pair:

@foreach ($assocArray as $key => $value)
    <p> {{ $key }}: {{ $value }}</p>
@endforeach

With this approach, you can display the key along with its corresponding value in a paragraph element.

Conditional Rendering with Arrays

Sometimes, you may only want to render an element if a certain condition is met. For this purpose, Blade provides directives like @if and @unless:

@foreach ($arrayVariable as $item)
    @if ($item->condition)
        {{ $item->value }}
    @endif
@endforeach

This code checks a condition for each item in the array before rendering it.

Advanced Array Handling

Blade also supports more complex operations such as filtering or mapping over arrays without leaving the templating engine. For instance, using the @php directive, you can embed raw PHP code:

@php
$arrayVariable = array_filter($arrayVariable, function ($item) {
    return $item->condition;
});
@endphp

This example filters the array using a callback function, directly within the Blade template.

Passing Data to Views

Understanding how to pass arrays to Blade templates from a Laravel controller is also crucial:

public function show()
{
    $data = ['first' => 'John', 'last' => 'Doe'];
    return view('user.profile', compact('data'));
}

In this example, we pass an associative array to a view called user.profile.

JSON in Blade

There are situations where you may need to convert PHP arrays to JSON:

@json($arrayVariable)

The @json directive is a nice shortcut to json_encode and is XSS safe.

Using Components

In more complex scenarios, you might want to extract repeating HTML structures as Blade components. Here’s a simple component example:

@component('components.item', ['item' => $item])
    // Additional data or structures can be passed here.
@endcomponent

This allows for the passing of array elements to a reusable component, making your templates cleaner and more organized.

Using Collections

Rather than dealing with arrays, Laravel promotes the use of its collection class, which provides a more fluent, object-oriented interface for working with arrays of data. Collections can be looped over in Blade templates similarly to arrays:

@foreach ($collectionVariable as $item)
   <div>{{ $item->property }}</div>
@endforeach

This is identical to the array loop except that $collectionVariable is an instance of Illuminate\Support\Collection.

Pagination

Laravel’s paginator is integrated with Blade, and can convert a large collection into a paginated response, rendered with the following:

{{ $paginatorVariable->links() }}

This will render the pagination links to navigate through the data set.

Conclusion

In conclusion, Blade makes it simple and intuitive to render PHP arrays with a succinct syntax that blends seamlessly with HTML. Typically, rendering data is carried out through looping directives or by passing data through components, offering flexibility and power to developers. By following the principles laid out in this guide, transforming your PHP arrays into user-facing content can be achieved with ease and elegance.