2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Laravel】QRコードを生成する方法

Posted at

はじめに

Laravelでは簡単にQRコードを生成できるとのことでその記録です。

動作環境・使用するツールや言語

  • OS バージョン
    • Windows11
  • ツール
    • VSCode
  • 言語
    • HTML&CSS
  • フレームワーク
    • Laravel8
  • 環境
    • docker v4.32.0

前提

  • Laravelのセットアップは済んでいるものとする
  • web.phpは特段変わるとこないので省く

手順

1.パッケージのインストール
2. サービスプロバイダーとエイリアスの設定
3. コントローラーでQRコードを生成
4. ビューでQRコードを表示

1.パッケージのインストール

PHPコンテナ内
composer require simplesoftwareio/simple-qrcode
  • このコマンドでインストール完了
    インストールされたかどうか確認する方法はいくつかあるが、一番簡単だなぁ~と思ったのが、composer.jsonで確認する方法。
src\composer.json
{
    ~
    "require": {
        ~
        "simplesoftwareio/simple-qrcode": "^2.0"
        // 上記のように"simplesoftwareio/simple-qrcode": "^2.0"があればOK
    },
    ~
}

2. サービスプロバイダーとエイリアスの設定

config\app\php
'providers' => [
    ~
    SimpleSoftwareIO\QrCode\QrCodeServiceProvider::class,
    // 色々書いてあるが、一番下に記述
]

'aliases' => [
    ~
    'QrCode' => SimpleSoftwareIO\QrCode\Facades\QrCode::class,
    // 色々書いてあるが、一番下に記述
]

3. コントローラーでQRコードを生成

QrCodeController.php
use SimpleSoftwareIO\QrCode\Facades\QrCode;

public function test()
{
    $qrCode = QrCode::size(200)->generate("Hello World");
    return view('test', compact('qrCode'));
}

コントローラーではなく、ビューでQRコードを生成する場合は下記 ↓

QrCodeController.php
public function test()
{
    return view('test');
}

4. ビューでQRコードを表示

test.blade.php
<body>
    <div>{!! $qrCode !!}</div>
</body>

コントローラーではなく、ビューでQRコードを生成する場合は下記 ↓

test.blade.php
<body>
    {!! QrCode::generate('Hello World')) !!}
    <!-- generate()でQRコードの内容を指定 -->
</body>

主要なつまずいた所

1.上記「4. ビューでQRコードを表示」まで行き、ブラウザで確認したところ、「クラス 'SimpleSoftwareIO\QrCode \ QrCodeServiceProvider'が見つかりません」とエラーが出現。

考えたこと・実行したこと

  • サービスプロバイダーとエイリアスの記述が正しくない?
    • 問題なし
  • composer require simplesoftwareio/simple-qrcodeをインストールした時のPHPコンテナ内のメッセージを確認
    • Cannot use simplesoftwareio/simple-qrcode's latest version 4.2.0 as it requires ext-gd * which is missing from your platform.を確認。
    • ext-gd 拡張モジュールが不足しているため、最新バージョンの simple-qrcode をインストールできなかったとのこと

解決策

Dockerコンテナ内でPHPのgd拡張モジュールをインストールと設定を追記

Dockerfile
RUN apt-get update && apt-get install -y \
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    libpng-dev \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) gd

改めて、dockerビルドからやり直すとうまく表示されました。

image.png

参考資料

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?