Simplifying Symfony Templating with Blade: A Step-by-Step Guide

Abdulbasit Rubeya
2 min readDec 31, 2023

--

Symfony is a powerful PHP framework widely used for building web applications. While Symfony provides its templating engine, developers often seek alternatives for various reasons, such as familiarity or specific project requirements. One popular choice is Blade Template Engine, an actively maintained templating engine that simplifies the templating process. In this article, we will guide you through the steps to integrate Blade into your Symfony project, offering a seamless experience.

Step 1: Install BladeOne with Composer

The first step is to install BladeOne using Composer, the dependency manager for PHP. Open your terminal and run the following command:

composer require eftec/bladeone

This command fetches and installs the BladeOne package, making it available for use in your Symfony project.

Step 2: Create a New Service

Next, create a new service that will handle the integration of BladeOne into Symfony. In your project directory, navigate to src/Service/ and create a file named Helpers.php. Add the following code to define the service:

namespace App\Service;

use eftec\bladeone\BladeOne;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class Helpers
{
public function __construct()
{
// Constructor logic, if needed
}

public function render($template, $data = [])
{
$views = __DIR__ . '/../../templates'; # where views will be stored
$cache = __DIR__ . '/../../var/cache';
$blade = new BladeOne($views, $cache, BladeOne::MODE_AUTO);
echo $blade->run($template, $data);
}
}

This service encapsulates the BladeOne rendering logic, making it easier to manage and reuse throughout your Symfony project.

Step 3: Register the Service

Symfony requires you to register your services to make them available for dependency injection. Open your services.yaml file and add the following code to register the Helpers service:

services:
# Previous service definitions

App\Service\Helpers:
autowire: true

Step 4: Use the Service in Your Controller

Now that the service is registered, you can use it in your Symfony controllers. In your controller file (e.g. PublicController.php), import the Helpers service and utilize it as follows:

namespace App\Controller;

use App\Service\Helpers;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class PublicController extends AbstractController
{
#[Route('/', name: 'home')]
public function index(Helpers $helpers): Response
{
$helpers->render('public.index', ['title' => 'Public Page']);
return new Response();
}
}

Step 5: Call Your Controller

Finally, call your controller through the specified route. When you access the corresponding URL, Symfony will invoke the index method in your PublicController, which, in turn, utilizes BladeOne for rendering the template.

--

--

Abdulbasit Rubeya
Abdulbasit Rubeya

Responses (1)