Un tutoriel pour créer un code QR (Quick Response) avec le package simplesoftwareio/simple-qrcode dans un projet Laravel.
Un QR code (QR pour Quick Response) est un type de code-barres en deux dimensions (ou code matriciel) qui se présente généralement sous forme de petits carrés noirs disposés dans un carré à fond blanc.
Voici un code QR, il représente l’URL de ce cours :
Un QR code offre l’avantage de stocker plus d’informations qu’un code-barres classique. Il peut contenir du texte, une adresse web, une carte de visite virtuelle (vCard), les informations d’un réseau WIFI, … Ces données sont directement reconnues par des applications, permettant ainsi de déclencher une action tels que :
Nous allons voir dans ce guide comment générer (créer) un code QR au format SVG avec le package simplesoftareio/simple-qrcode dans un projet Laravel.
Le package simplesofwareio/simple-qrcode est un wrapper pour Laravel du package PHP Bacon/BaconQrCode qui génère les codes QR.
Pour télécharger simple-qrcode dans un projet Laravel, on exécute la commande composer suivante :
composer require simplesoftwareio/simple-qrcode "~4"
Une fois le package simplesofwareio/simple-qrcode importé dans un projet Laravel, nous pouvons l’utiliser.
Pour générer et afficher un code QR, nous allons procéder de la manière suivante :
generate()
pour présenter la vue simple-qrcode.blade.php (template Blade) où afficher le code QRgenerate()
: générer le code QR et l'envoyer à la vueImplémentons ce processus :
1. Définissions la route « simple-qrcode » au fichier routes/web.php :
<?php
use Illuminate\Support\Facades\Route;
# la route "simple-qrcode"
Route::get("simple-qrcode", "SimpleQRcodeController@generate");
2. Générons le contrôleur SimpleQRcodeController en exécutant la commande artisan suivante :
php artisan make:controller SimpleQRcodeController
Cette commande génère le fichier app/Http/Controllers/SimpleQRcodeController.php.
Pour créer un code QR, nous avons la façade SimpleSoftwareIO\QrCode\Facades\QrCode à travers laquelle nous avons accès aux méthodes :
generate($contenu)
où $contenu
est le contenu du code QRsize($taille)
où $taille
est la taille de l'image en pixelGénérons un code QR de 200px qui contient le texte « je suis un code QR ». Le code source du contrôleur SimpleQRcodeController.php devient :
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
# 1. La facade QrCode
use SimpleSoftwareIO\QrCode\Facades\QrCode;
class SimpleQRcodeController extends Controller
{
// L'action "generate" de la route "simple-qrcode" (GET)
public function generate () {
# 2. On génère un QR code de taille 200 x 200 px
$qrcode = QrCode::size(200)->generate("Je suis un QR Code");
# 3. On envoie le QR code généré à la vue "simple-qrcode"
return view("simple-qrcode", compact('qrcode'));
}
}
Affichons le code QR généré sur la vue (template Blade) resources/views/simple-qrcode.blade.php :
<!DOCTYPE html>
<html>
<head>
<title>Simple Qrcode</title>
</head>
<body>
<!-- On affiche le code QR au format SVG -->
{{ $qrcode }}
</body>
</html>
J’obtiens le rendu suivant dans Google Chrome :
Le code QR généré est au format SVG par défaut. Nous pouvons aussi directement l'enregistrer dans le répertoire /public du projet en indiquant le chemin $chemin
en second paramètre à la méthode generate($texte, $chemin)
:
$qrcode = QrCode::size(200)->generate("Je suis un QR Code", '../public/codes-qr/texte.svg');
Le package simplesoftwareio/simple-qrcode fournit des helpers (fonctions) pour stocker d’autres types d'informations dans un code QR :
$qrcode = Qrcode::size(200)->generate("https://www.akilischool.com");
L’helper email($email, $subject, $content)
génère un code QR d'un courriel pour l’adresse email $email
avec le sujet $subject
et le message $content
:
// Un e-mail avec destinataire, sujet et message
$qrcode = QrCode::size(200)->email("[email protected]", "Salutations", "Bonjour Akili School ! Quoi de neuf ?");
// Un e-mail avec destinataire uniquement
$qrcode = QrCode::size(200)->email("[email protected]");
// Un e-mail sans destinataire
$qrcode = QrCode::size(200)->email(null, "Salutations", "Bonjour Akili School ! Quoi de neuf ?");
En utilisant le préfixe « mailto: » dans la méthode generate()
:
$qrcode = QrCode::size(200)->generate("mailto:[email protected]");
L’helper geo($latitude, $longitude)
génère un code QR d'une position en indiquant la latitude $latitude
et la longitude $longitude
:
$qrcode = QrCode::size(200)->geo(-4.308904, 15.302172);
En utilisant le préfixe « geo: » dans la méthode generate()
:
$qrcode = QrCode::size(200)->generate("geo:-4.308904,15.302172");
L’helper phoneNumber($number)
génère un code QR d'un numéro de téléphone $number
à composer ou ajouter aux contacts :
$qrcode = QrCode::size(200)->phoneNumber("+243811111111");
$qrcode = QrCode::size(200)->phoneNumber("666-666-6666");
En utilisant le préfixe « tel: » dans la méthode generate()
:
$qrcode = QrCode::size(200)->generate("tel:+243811111111");
L’helper SMS($phone, $message)
génère un code QR d'un texto $message
pour le numéro de téléphone $phone
:
$qrcode = QrCode::size(200)->SMS("+243811111111", "Hello World !");
En utilisant le préfixe « sms: » dans la méthode generate()
:
$qrcode = Qrcode::size(200)->generate("sms:+243811111111");
L’helper wifi($options)
génère un code QR pour connecter un périphérique à un réseau WiFi :
$qrcode = QrCode::wiFi([
'encryption' => 'WPA', // Cryptage "WPA" ou "WEP"
'ssid' => 'Akili School', // Nom du réseau WiFi
'password' => 'Emilie-9876543210.', // Clé de sécurité
'hidden' => 'false' // Si le réseau WiFi est masqué "true" ou non "false"
]);
Seul le paramètre « ssid » est requis. On renseigne les paramètres « encryption » et « password» pour un réseau WiFi sécurisé (avec une clé de sécurité), « hidden » pour un réseau masqué.
Hormis définir la taille du code QR en appelant la méthode size($taille)
, le package simple-qrcode fournit les méthodes :
format($format)
pour générer le code QR au format $format
. « svg », « png » et « eps » sont supportés. « imagick » est requis pour générer une image .png
color(int $rouge, int $vert, int $bleu, int $alpha = null)
pour changer la couleur du code QRbackgroundColor(int $rouge, int $vert, int $bleu, int $alpha = null)
pour changer la couleur de fond du code QRencoding(string $encoding)
pour changer l'encodage des caractèresstyle(string $style, float $size = 0.5)
pour changer le style du code QR en $style
(square, dot, round)Personnalisons le code QR d'une URL :
$qrcode = Qrcode::encoding("UTF-8")
->color(8, 114, 145)
->backgroundColor(245, 234, 62)
->size(300)
->generate("https://akilischool.com/cours/laravel-generer-un-qr-code-avec-simple-qrcode");
Notez bien : La méthode generate()
doit venir après toutes les autres méthodes.
A vous les codes QR ! 😎
Cette publication vous a plu ?
Partagez-la avec vos ami(e)s sur les réseaux sociaux.
Wilo Ahadi, l'auteur
Passionné de l'informatique, je suis spécialiste en techniques des systèmes et réseaux, développeur web et mobile, infographiste et designer, ... J'aime partager mon expérience en formant sur la plateforme Akili School
Voir profil
Commentaires