Sling Academy
Home/PHP/How to Create and Display a QR Code in Symfony

How to Create and Display a QR Code in Symfony

Last updated: February 05, 2024

Introduction

In this tutorial, we will explore the process of creating and displaying a QR code in a Symfony project. Whether you’re building a web application that generates event tickets, adds a layer of security through 2-factor authentication, or simply aims to share URLs or contact information quickly, integrating QR codes can enhance functionality and user experience. We’ll cover installation, QR code generation, and rendering it in a Symfony twig template.

Prerequisites

  • PHP 7.4 or higher
  • Symfony 4.4 or newer
  • Composer installed
  • Basic understanding of Symfony framework

Step-by-Step Instructions

Step 1: Installing the Bundle

The first step is to install a bundle that allows QR code generation. For this purpose, we’ll use the endroid/qr-code-bundle. Run the following command in your project directory:

composer require endroid/qr-code-bundle

This command installs the bundle and enables it in Symfony flex automatically.

Step 2: Configuring the Route

Create a new controller or use an existing one to house the QR code generation logic. For this example, we’ll create a QrCodeController.php in the src/Controller directory. Add the following route configuration:

#[Route('/qr-code', name: 'qr_code')]
public function generateQrCode(): Response
{
    // QR code generation logic will go here
}

We’ve now set up a path that will lead to our QR code generation function.

Step 3: Generating the QR Code

In the generateQrCode() method, add the following code to generate a QR code:

$qrCode = new QrCode('This is a QR code content!');
$qrCode->setSize(300); // Size in pixels

// Optionally, customize your QR code
$qrCode->setMargin(10);
$qrCode->setEncoding('UTF-8');
$qrCode->setErrorCorrectionLevel(ErrorCorrectionLevel::HIGH);
$qrCode->setForegroundColor(['r' => 0, 'g' => 0, 'b' => 0, 'a' => 0]);
$qrCode->setBackgroundColor(['r' => 255, 'g' => 255, 'b' => 255, 'a' => 0]);

// To save the QR code
// $qrCode->writeFile(__DIR__.'/../../public/qrcodes/your-qr-code.png');

// To directly output to the browser
$response = new Response($qrCode->writeString(), 200, ['Content-Type' => 'image/png']);
return $response;

This code snippet creates a basic QR code and sets various properties like size, margin, encoding, error correction level, and colors. We’ve commented out the line that saves the QR code as a file, but you can uncomment it if you need to store the QR code image.

Step 4: Displaying the QR Code in Twig

To display the QR code in a Symfony twig template, use the following twig syntax:

{{ path('qr_code') }}

This code will generate a URL to the route where the QR code is generated. If you want to display the QR code as part of an HTML page, you could embed it within an <img> tag like so:

<img src="{{ path('qr_code') }}" alt="QR Code">

And there you have it, your very own QR code displayed in a Symfony application!

Conclusion

Throughout this tutorial, we’ve explored how to integrate QR code functionality into a Symfony application. We installed the necessary bundle, configured a route for generating QR codes, wrote the logic to generate and potentially save QR codes, and finally, displayed the QR code in a twig template. This functionality can be extended in myriad ways depending on your project’s requirements, such as generating dynamic QR codes for unique URLs or user data, enhancing application security, or providing easy access to online resources.

By leveraging bundles and Symfony’s robust framework, adding sophisticated features like QR code generation becomes manageable, even for developers new to the ecosystem. Keep experimenting and exploring Symfony’s extensive capabilities to enhance your projects further.

Next Article: How to Validate Uploaded Files in Symfony

Previous Article: Handling sub-requests in Symfony: A Practical Guide

Series: Symfony & Doctrine Tutotirlas

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