【Laravel】バーコードを表示する

# 流れ

１、パッケージ選定
２、インストール
３、実装

# パッケージ選定

Packagistで「barcode Laravel」で検索します。
![スクリーンショット 2020-09-25 10.38.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/689332/7620225b-f433-3311-4f45-5763a7cf7611.png)
最上位に表示されている、ダウンロード数とスター数が一番多いmilon/barcodeを利用します。

ダウンロード数やスター数が多いパッケージを利用する理由は、
詰まった時に解決する術をどこかで見つけられる可能性が高いからです。


# インストール

下記コマンドで実行。

```
composer require milon/barcode
```

こけました。。

```
Your requirements could not be resolved to an installable set of packages.
 　Problem 1
     - milon/barcode 7.0.0 requires illuminate/support ^7.0
(抜粋)
```




``illuminate/support ^7.0``が必要と言われてますね。
バージョン指定しない場合は、最新のものをインストールしようとするので、
古めのLaravel5.8を使っていたのでダメだったみたいですね。

なのでバージョン指定をして再度インストールします。
Laravel5.8でしたが``Laravel5.0 and 5.1``と``Laravel6.*``の
間に記述がなかったので、ちょっと迷いました。

![スクリーンショット 2020-09-25 11.07.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/689332/c5090dae-4f55-b3b5-593b-a0c84319311c.png)

試しに``Laravel6.*``扱いの下記コマンドで実行したところ、
無事インストールできました。

```
composer require milon/barcode:"6.0"
```

# 実装

バーコード表示のための準備で、
app.phpでプロバイダとエイリアスの登録を行います。

```php:app.php

    'providers' => [

        /*
         * Laravel Framework Service Providers...
         */
        Illuminate\Auth\AuthServiceProvider::class,
        Illuminate\Broadcasting\BroadcastServiceProvider::class,
        Illuminate\Bus\BusServiceProvider::class,
        (省略)

        /*
         * Package Service Providers...
         */
      + Milon\Barcode\BarcodeServiceProvider::class,

        /*
         * Application Service Providers...
         */
        App\Providers\AppServiceProvider::class,
        App\Providers\AuthServiceProvider::class,
        // App\Providers\BroadcastServiceProvider::class,
        App\Providers\EventServiceProvider::class,
        App\Providers\RouteServiceProvider::class,
        App\Providers\CommonServiceProvider::class,

    ],

    /*
    |--------------------------------------------------------------------------
    | Class Aliases
    |--------------------------------------------------------------------------
    |
    | This array of class aliases will be registered when this application
    | is started. However, feel free to register as many as you wish as
    | the aliases are "lazy" loaded so they don't hinder performance.
    |
    */

    'aliases' => [

        'App' => Illuminate\Support\Facades\App::class,
        'Arr' => Illuminate\Support\Arr::class,
        'Artisan' => Illuminate\Support\Facades\Artisan::class,
        (省略)
        'Validator' => Illuminate\Support\Facades\Validator::class,
        'View' => Illuminate\Support\Facades\View::class,

      + 'DNS1D' => Milon\Barcode\Facades\DNS1DFacade::class,
      + 'DNS2D' => Milon\Barcode\Facades\DNS2DFacade::class,

    ],
```

Webページにバーコードを表示するので、HTMLで生成。

```
$barcode = DNS1D::getBarcodeHTML(1234567A, "C128", 3, 70, 'black', true);
```

この変数をbladeファイルに渡して、表示したい場所にてechoで出力。
（1234567Aは架空の数字です。）

```php:home.blade.php
<?php echo $barcode ?>
```

![スクリーンショット 2020-09-26 10.20.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/689332/c5edc519-3eae-a676-ff18-60870069945d.png)

メソッドのgetBarcodeHTMLは、

第一引数に、コード
第二引数に、バーコードのタイプ
第三引数に、高さ
第四引数に、幅
第五引数に、色
第六引数に、下記にコードを表示するかどうかの真偽値

をとる形ですね。

# まとめ
少しつまるところもあったので、復習で記事にまとめました。おわり。