QR (Quick Response) code is scannable black and white square box that stores data.
They are commonly used to store information, redirect users to a website, download files, payment, etc.
In this tutorial, I show how you can generate QR code using simple qrcode package in Laravel 8.
Contents
1. Install Package
Install the package using composer –
composer require simplesoftwareio/simple-qrcode
2. Update app.php
- Open
config/app.php
file. - Add the following
SimpleSoftwareIO\QrCode\QrCodeServiceProvider::class
in'providers'
–
'providers' => [ .... .... .... SimpleSoftwareIO\QrCode\QrCodeServiceProvider::class, ];
- Add the following
'QrCode' => SimpleSoftwareIO\QrCode\Facades\QrCode::class
in'aliases'
–
'aliases' => [ .... .... .... 'QrCode' => SimpleSoftwareIO\QrCode\Facades\QrCode::class ];
3. Route
- Open
routes/web.php
file. - Define a routes –
- / – Load index view.
Completed Code
<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\PageController; Route::get('/', [PageController::class, 'index']);
4. Controller
- Create
PagesController
Controller.
php artisan make:controller PagesController
- Open
app/Http/Controllers/PagesController.php
file. - Import QrCode package –
use SimpleSoftwareIO\QrCode\Facades\QrCode;
- Create a method –
- index() – Generating a simple QR code which holds some text and assign to
$data['qrcode']
.
- index() – Generating a simple QR code which holds some text and assign to
Generate QR code with text and store in images/
folder for download. Load index
view and pass $data
.
$data['qrcode'] = QrCode::generate('Welcome to Makitweb'); // Store QR code QrCode::generate('Welcome to Makitweb', public_path('images/qrcode.svg') );
Completed Code
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use SimpleSoftwareIO\QrCode\Facades\QrCode; class PageController extends Controller { public function index(){ // QR code with text $data['qrcode'] = QrCode::generate('Welcome to Makitweb'); // Store QR code for download QrCode::generate('Welcome to Makitweb', public_path('images/qrcode.svg') ); return view('index',$data); } }
5. View
Create index.blade.php
file in resources/views/
folder.
Display QR code generated in the controller –
{!! $qrcode !!}
QR code with text –
{!! QrCode::generate('Welcome to Makitweb'); !!}
Pass text in generate()
.
QR code with URL –
{!! QrCode::generate('https://makitweb.com'); !!}
Pass URL in generate()
.
Change QR code color –
QrCode::color(224, 224, 224)->backgroundColor(102, 0, 204)->generate('Welcome to Makitweb');
color() – Pass RGB color code to change QR color.
backgroundColor() – Pass RGB color code to change QR background color.
Change size –
QrCode::size(200)->generate('Welcome to Makitweb');
By default QR code size is 100px, to change it use size()
.
Change format –
QrCode::format('png')->generate('Welcome to Makitweb');
Default format of QR code is SVG, to change pass png
to format()
.
NOTE – Make sure
imagick
extension is installed otherwise it will display error.
Download QR code –
Saved QR code to images/qrcode.svg
using –
// Store QR code QrCode::generate('Welcome to Makitweb', public_path('images/qrcode.svg') );
Pass file path in anchor tag –
<a href="{{ asset('images/qrcode.svg') }}" download>Download</a>
Completed Code
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>How to Generate QR Code Using Simple QRcode In Laravel 8</title> </head> <body> <table border="1" style="border-collapse: collapse;"> <tr> <td> QR with text <br> Generated from controller </td> <td> {!! $qrcode !!} </td> </tr> <tr> <td> QR with text </td> <td> {!! QrCode::generate('Welcome to Makitweb'); !!} </td> </tr> <tr> <td> QR with URL </td> <td> {!! QrCode::generate('https://makitweb.com'); !!} </td> </tr> <tr> <td> Change QR color </td> <td> {!! QrCode::color(224, 224, 224)->backgroundColor(102, 0, 204)->generate('Welcome to Makitweb'); !!} </td> </tr> <tr> <td> Change default size to 200px </td> <td> {!! QrCode::size(200)->generate('Welcome to Makitweb'); !!} </td> </tr> <tr> <td> PNG format </td> <td> {!! QrCode::format('png')->generate('Welcome to Makitweb'); !!} </td> </tr> <tr> <td>Download QR code</td> <td> <a href="{{ asset('images/qrcode.svg') }}" download>Download</a> </td> </tr> </table> </body> </html>
6. Demo
7. Conclusion
You can either generate a QR code from the controller and display it in view or directly create it on view.
By default, QR is generated in SVG format and you can change it to PNG but imagick
extension must be installed otherwise it will display an error.
You can learn more about this package from here.
If you found this tutorial helpful then don't forget to share.