- 投稿日:2020-09-26T21:19:49+09:00
Google App EngineへのLaravel環境デプロイが思っていたより難しかった件
GCPでLaravelを動かすだけだと思っていたのですが、思いのほか時間がかかったのと、一つで完結するような記事がなかったので、自分へのメモと今後Google Cloud Platformをはじめてみたい方向けにこの記事を残します
始める前に知っておくこと
天下のGoogle様のサービスだけあってできることは非常に多いですが、個人で通常利用する分には課金関連以外でのサポートを受けれません。そのため、基本的に技術的な問題に関してはコミュニティで質問することを推奨してます。
なので自分で調べたり、質問する力がないとすこしきついと感じましたまた、詳しくはこの記事で説明していますが、AppEngineではデプロイするファイルの差分が10000以上だとエラーとなるため、回避手段もいくつかありますが、10000なんて必要なライブラリなどを入れていたらすぐに超えてしまうので、注意が必要です
ローカル環境を構築
まずはローカルにlarvelの環境を作り、正常に表示されることを確認します$ composer create-project "laravel/laravel=5.7.*" sample $ cd sample $ php artisan serve
127.0.0.1:8000
にブラウザでアクセスしてページが表示されていればOKapp.yamlを追加
先にローカル環境に作ったプロジェクトに
app.yaml
を追加しておきます(.envとかと同じ階層でOK)
runtimeにはローカル環境で使っているPHPのバージョンを記載し、自分ならPHP Ver7.3なのでphp73
※現時点ではPHP7.4まで対応していますが、詳細はこちらで確認してくださいapp.yamlruntime: php73 env_variables: APP_KEY: YOUR_APP_KEY ## .envのAPP_KEYを記載 ex) base64:Ts6Uz7mj0x~~~ APP_STORAGE: /tmp VIEW_COMPILED_PATH: /tmp SESSION_DRIVER: cookie↑
app.yaml
はインスタンスが崩れていたりするとデプロイ時にエラーを出力するので注意!App Engine用にストレージパスを追記
bootstrap/app.php/* |-------------------------------------------------------------------------- | Set Storage Path |-------------------------------------------------------------------------- | | This script allows you to override the default storage location used by | the application. You may set the APP_STORAGE environment variable | in your .env file, if not set the default location will be used | */ //この行を追記---------------------------------------------------| $app->useStoragePath(env('APP_STORAGE', base_path() . '/storage')); return $app;不要なパッケージを削除しておく
存在するとエラーの原因になるので消しておく
$ composer remove --dev beyondcode/laravel-dump-server $ composer remove --dev facade/ignition //ちなみにLaravel 6.0を使っているならこちらを削除
Google App Engineにデプロイ
まずはGoogleCloudのコンソールで適当なプロジェクトを作っておきます
Google Cloud SDKをインストール
ローカル環境にGoogle Cloud SDKをインストール
自分の場合はUbuntuだったのですが、ほかの環境の方はここを確認$ echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list $ sudo apt-get install apt-transport-https ca-certificates gnupg $ echo "deb https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list $ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add - $ sudo apt-get update && sudo apt-get install google-cloud-sdkGoogle Cloud SDKをセットアップ
gcloudコマンドが使えるようになったらローカル環境のフォルダに移動し、セットアップを行います
こちらも詳細はこちらに乗っていますが、以下の通りです$ gcloud init Pick configuration to use: [1] Re-initialize this configuration [default] with new settings [2] Create a new configuration Please enter your numeric choice: 1 //デフォルトの設定があればそれを使うので「1」入力。最初などは「2」で設定を登録しておきますChoose the account you would like to use to perform operations for this configuration: [1] 登録していればここにメールアドレスが表示される [2] Log in with a new account Please enter your numeric choice: 1 //メールアドレスが登録されていればそれを選択し、なければ「2」を押して、この後発行されるURLで追加できます
Pick cloud project to use: [1] 存在すればgoogle cloudのプロダクト名が表示されます [2] 存在すればgoogle cloudのプロダクト名が表示されます [3] Create a new project Please enter numeric choice or text value (must exactly match list item): 2 //事前に作成しておいたGoogle Cloudのプロダクトの番号を選択
[asia-east1]が東京、[asia-east2]が大阪リージョンなのでお好きなのを選んでください。a,b,cも任意のものを選択してください
Which compute zone would you like to use as project default? [1] [asia-east1-a] [2] [asia-east1-b] ... [14] Do not use default zone Please enter your numeric choice: 1 //使用するリージョンを決めます。ここは使いたいリージョンを選んでくださいデプロイ
$ gcloud app deploy Do you want to continue (Y/n)? yCloud SQLとの接続(クラウドデータベースとの接続)
SQLインスタンスを作成する
コンソールからSQLインスタンスを作成しますが、最初はアクティブになってないので「SQL」で検索すると出てきます
自分はMysqlを選択しています
インスタンスIDは任意で大丈夫ですが、Mysqlのバージョンやリージョンはローカル環境に合わせましょう
インスタンスを作成したらダッシュボードに表示されている接続名が"YOUR_CONNECTION_NAME"になるのでメモしておきましょう
また左の"ユーザー"からユーザーも作成できるので、.envで使っているユーザーと同じユーザーをつくっておきます(root以外を使っている場合)
データベースを作成する
SQLインスタンスのダッシュボード左のメニューから"データベース"を選択してローカル環境で使っているデータベースと同じ名前のデータベースを作っておきます
※コマンドでもデータベースを作成できます(gcloud sql databases create データベース名 --instance=インスタンス名)
ローカル環境でテーブルを作成
ローカル環境で以下のコマンドを実行し、テーブルを作成しておきます$ php artisan make:auth $ php artisan session:table $ php artisan migrate --forceローカル環境のテーブルをクラウドと同期
以下のコマンドをローカル環境で実行するとrootのパスワードが求められ、成功すると同じディレクトリに
database_table
というファイルが作成されます$ mysqldump -u root -p -h localhost ローカル環境のデータベース名 > database_tableプロダクトのダッシュボードで「storage」を検索して、stogareのページを開き、任意の名称のパケットを作成します
作成したパケットを選択して、ローカルで作成したdatabase_table
をアップロードします
ファイルがアップデートできたらSQLインスタンスのダッシュボードに移行し、インポートを選択します
先ほどアップデートしたファイルを参照し、SQLの形式で自分の使うデータベースにインポートします
デプロイ
ローカル環境の
app.yaml
を差し替えてデプロイを行いますapp.yamlruntime: php73 # この記載がないとcssとjsがnot foundになるので必須 handlers: # Serve a directory as a static resource. - url: /css static_dir: public/css - url: /js static_dir: public/js env_variables: ## Put production environment variables here. APP_KEY: YOUR_APP_KEY ## .envのAPP_KEYを記載 ex) base64:Ts6Uz7mj0x~~~ APP_STORAGE: /tmp VIEW_COMPILED_PATH: /tmp CACHE_DRIVER: database SESSION_DRIVER: database ## Set these environment variables according to your CloudSQL configuration. DB_DATABASE: YOUR_DB_DATABASE #クラウドのデータベース名 DB_USERNAME: YOUR_DB_USERNAME #クラウドのユーザー名 DB_PASSWORD: YOUR_DB_PASSWORD #クラウドのユーザーのパスワード ## for MYSQL, use DB_SOCKET: DB_SOCKET: "/cloudsql/YOUR_CONNECTION_NAME" #YOUR_CONNECTION_NAMEにはメモっていたものを記載 ## for PostgreSQL, use DB_HOST: # DB_HOST: "/cloudsql/YOUR_CONNECTION_NAME" #Postgresqlの場合はこのように記載$ gcloud app deploy Do you want to continue (Y/n)? y正常にデプロイできると以下のような画面になるので、ユーザーの登録とログインができることを確認してください
エラー集
SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from sessions where id = dgbEmZ9AufF9UD9kkeUxLlfeppZ1Z3erfe7UHQbHd limit 1)
Cloud SQLに上手く接続できていないときに発生し、原因は様々ですが自分の場合は以下の手段で解決しました
まずはMysqlで
show variables like '%sock%';
を実行すると以下のような表示が出てくると思います+-----------------------------------------+-----------------------------------------+ | Variable_name | Value | +-----------------------------------------+-----------------------------------------+ | performance_schema_max_socket_classes | 0 | | performance_schema_max_socket_instances | 0 | | socket | /tmp/mysql/mysql.sock | +-----------------------------------------+-----------------------------------------+socketの値を第2引数に入れます
config\database.php'mysql' => [ 'unix_socket' => env('DB_SOCKET','/tmp/mysql/mysql.sock'), ],app.yamlDB_SOCKET: "/cloudsql/YOUR_CONNECTION_NAME"
参考文献
https://cloud.google.com/community/tutorials/run-laravel-on-appengine-standard
https://qiita.com/kiyc/items/d86da4e5753220c121b9
https://memento-mori.jp/blog/back-end/google-app-engine_on_laravel
https://note.com/kawa1228/n/n4ab34e8f63fb
http://takaya030.hatenablog.com/entry/2017/07/17/181217
https://cloud.google.com/sdk/gcloud/reference/topic/gcloudignore
https://cloud.google.com/sql/docs/mysql/connect-admin-proxy?hl=ja
https://cloud.google.com/sql/docs/mysql/import-export/importing?hl=ja#console
https://github.com/GoogleCloudPlatform/cloudsql-proxy/issues/140
http://numa0323.hatenablog.jp/entry/2019/09/18/122436
https://laboradian.com/use-php72-with-ubuntu1604/
- 投稿日:2020-09-26T16:53:23+09:00
Laravelのバリデーションの日本語化(個人的備忘録)
app.phpの修正
config/app.php---略--- # 'en'を'ja'に変更 'locale' => 'ja', -------validation.phpの作成
「resources」ディレクトリの中の「lang」ディレクトリに「ja」ディレクトリを作成し、
validation.phpを作成する。その中に以下の記述を行う。resources/lang/ja/validation.php<?php return [ /* |-------------------------------------------------------------------------- | バリデーション言語行 |-------------------------------------------------------------------------- | | 以下の言語行はバリデタークラスにより使用されるデフォルトのエラー | メッセージです。サイズルールのようにいくつかのバリデーションを | 持っているものもあります。メッセージはご自由に調整してください。 | */ 'accepted' => ':attributeを承認してください。', 'active_url' => ':attributeが有効なURLではありません。', 'after' => ':attributeには、:dateより後の日付を指定してください。', 'after_or_equal' => ':attributeには、:date以降の日付を指定してください。', 'alpha' => ':attributeはアルファベットのみがご利用できます。', 'alpha_dash' => ':attributeはアルファベットとダッシュ(-)及び下線(_)がご利用できます。', 'alpha_num' => ':attributeはアルファベット数字がご利用できます。', 'array' => ':attributeは配列でなくてはなりません。', 'before' => ':attributeには、:dateより前の日付をご利用ください。', 'before_or_equal' => ':attributeには、:date以前の日付をご利用ください。', 'between' => [ 'numeric' => ':attributeは、:minから:maxの間で指定してください。', 'file' => ':attributeは、:min kBから、:max kBの間で指定してください。', 'string' => ':attributeは、:min文字から、:max文字の間で指定してください。', 'array' => ':attributeは、:min個から:max個の間で指定してください。', ], 'boolean' => ':attributeは、trueかfalseを指定してください。', 'confirmed' => ':attributeと、確認フィールドとが、一致していません。', 'date' => ':attributeには有効な日付を指定してください。', 'date_equals' => ':attributeには、:dateと同じ日付けを指定してください。', 'date_format' => ':attributeは:format形式で指定してください。', 'different' => ':attributeと:otherには、異なった内容を指定してください。', 'digits' => ':attributeは:digits桁で指定してください。', 'digits_between' => ':attributeは:min桁から:max桁の間で指定してください。', 'dimensions' => ':attributeの図形サイズが正しくありません。', 'distinct' => ':attributeには異なった値を指定してください。', 'email' => ':attributeには、有効なメールアドレスを指定してください。', 'ends_with' => ':attributeには、:valuesのどれかで終わる値を指定してください。', 'exists' => '選択された:attributeは正しくありません。', 'file' => ':attributeにはファイルを指定してください。', 'filled' => ':attributeに値を指定してください。', 'gt' => [ 'numeric' => ':attributeには、:valueより大きな値を指定してください。', 'file' => ':attributeには、:value kBより大きなファイルを指定してください。', 'string' => ':attributeは、:value文字より長く指定してください。', 'array' => ':attributeには、:value個より多くのアイテムを指定してください。', ], 'gte' => [ 'numeric' => ':attributeには、:value以上の値を指定してください。', 'file' => ':attributeには、:value kB以上のファイルを指定してください。', 'string' => ':attributeは、:value文字以上で指定してください。', 'array' => ':attributeには、:value個以上のアイテムを指定してください。', ], 'image' => ':attributeには画像ファイルを指定してください。', 'in' => '選択された:attributeは正しくありません。', 'in_array' => ':attributeには:otherの値を指定してください。', 'integer' => ':attributeは整数で指定してください。', 'ip' => ':attributeには、有効なIPアドレスを指定してください。', 'ipv4' => ':attributeには、有効なIPv4アドレスを指定してください。', 'ipv6' => ':attributeには、有効なIPv6アドレスを指定してください。', 'json' => ':attributeには、有効なJSON文字列を指定してください。', 'lt' => [ 'numeric' => ':attributeには、:valueより小さな値を指定してください。', 'file' => ':attributeには、:value kBより小さなファイルを指定してください。', 'string' => ':attributeは、:value文字より短く指定してください。', 'array' => ':attributeには、:value個より少ないアイテムを指定してください。', ], 'lte' => [ 'numeric' => ':attributeには、:value以下の値を指定してください。', 'file' => ':attributeには、:value kB以下のファイルを指定してください。', 'string' => ':attributeは、:value文字以下で指定してください。', 'array' => ':attributeには、:value個以下のアイテムを指定してください。', ], 'max' => [ 'numeric' => ':attributeには、:max以下の数字を指定してください。', 'file' => ':attributeには、:max kB以下のファイルを指定してください。', 'string' => ':attributeは、:max文字以下で指定してください。', 'array' => ':attributeは:max個以下指定してください。', ], 'mimes' => ':attributeには:valuesタイプのファイルを指定してください。', 'mimetypes' => ':attributeには:valuesタイプのファイルを指定してください。', 'min' => [ 'numeric' => ':attributeには、:min以上の数字を指定してください。', 'file' => ':attributeには、:min kB以上のファイルを指定してください。', 'string' => ':attributeは、:min文字以上で指定してください。', 'array' => ':attributeは:min個以上指定してください。', ], 'not_in' => '選択された:attributeは正しくありません。', 'not_regex' => ':attributeの形式が正しくありません。', 'numeric' => ':attributeには、数字を指定してください。', 'present' => ':attributeが存在していません。', 'regex' => ':attributeに正しい形式を指定してください。', 'required' => ':attributeは必ず指定してください。', 'required_if' => ':otherが:valueの場合、:attributeも指定してください。', 'required_unless' => ':otherが:valuesでない場合、:attributeを指定してください。', 'required_with' => ':valuesを指定する場合は、:attributeも指定してください。', 'required_with_all' => ':valuesを指定する場合は、:attributeも指定してください。', 'required_without' => ':valuesを指定しない場合は、:attributeを指定してください。', 'required_without_all' => ':valuesのどれも指定しない場合は、:attributeを指定してください。', 'same' => ':attributeと:otherには同じ値を指定してください。', 'size' => [ 'numeric' => ':attributeは:sizeを指定してください。', 'file' => ':attributeのファイルは、:sizeキロバイトでなくてはなりません。', 'string' => ':attributeは:size文字で指定してください。', 'array' => ':attributeは:size個指定してください。', ], 'starts_with' => ':attributeには、:valuesのどれかで始まる値を指定してください。', 'string' => ':attributeは文字列を指定してください。', 'timezone' => ':attributeには、有効なゾーンを指定してください。', 'unique' => ':attributeの値は既に存在しています。', 'uploaded' => ':attributeのアップロードに失敗しました。', 'url' => ':attributeに正しい形式を指定してください。', 'uuid' => ':attributeに有効なUUIDを指定してください。', /* |-------------------------------------------------------------------------- | Custom バリデーション言語行 |-------------------------------------------------------------------------- | | "属性.ルール"の規約でキーを指定することでカスタムバリデーション | メッセージを定義できます。指定した属性ルールに対する特定の | カスタム言語行を手早く指定できます。 | */ 'custom' => [ '属性名' => [ 'ルール名' => 'カスタムメッセージ', ], ], /* |-------------------------------------------------------------------------- | カスタムバリデーション属性名 |-------------------------------------------------------------------------- | | 以下の言語行は、例えば"email"の代わりに「メールアドレス」のように、 | 読み手にフレンドリーな表現でプレースホルダーを置き換えるために指定する | 言語行です。これはメッセージをよりきれいに表示するために役に立ちます。 | */ 'attributes' => [], ];しかし、このままだと「emailには、有効なメールアドレスを指定してください。」と表示がされるので、細部の日本語化を自ら設定する必要がある。
resources/lang/ja/validation.php---略--- 'attributes' => [ 'email' => 'メールアドレス', ], -------これで「メールアドレスには、有効なメールアドレスを指定してください。」と表示がされる。
- 投稿日:2020-09-26T14:46:20+09:00
LaravelのFactoryで連続した日付データの挿入
Laravelのseederやらfactoryについて勉強中、連続した日付データの挿入に苦戦したので備忘録
schedule_table
id title schedule_day 1 aaa 2020-09-27 2 bbb 2020-09-28 3 ccc 2020-09-29 4 ddd 2020-09-30 5 eee 2020-10-01 ↑こんな感じで日付が連続したテストデータが欲しかった
実行するシーダーファイルを記述DatabaseSeeder.phpclass DatabaseSeeder extends Seeder { public function run() { $this->call([ UserSeeder::class, ScheduleSeeder::class ]); } }
対象のカラムはシーダーファイルから値を指定するので空文字にしておくScheduleFactory.php$factory->define(App\Models\Schedule::class, function (Faker $faker) { return [ 'title' => $faker->words, // seederファイルから上書きするので空にしておく 'schedule_day' => '', ]; });
modify('+1day')でタイムスタンプを変更しつつ、その日付をfor文で一件ずつ挿入していくScheduleSeeder.phpclass ScheduleSeeder extends Seeder { public function run() { $scheduled_date = new DateTime(); for ($i = 0; $i < 5; $i++) { factory(App\Models\Schedule::class, 1) // createに配列でカラム名、値をセットするとfactoryファイルの内容を上書きできる ->create([ 'schedule_day' => $scheduled_date->modify('+1day')->format('Y-m-d') ]); } } }
この辺、あまり参考記事がないので難しい、、
- 投稿日:2020-09-26T12:55:21+09:00
【Laravel】Eloquent:複数代入時の$guardedの使い方についての備忘録
開発環境
PHP7.3
Laravel5.8
MySQL8.0フォームから送信した値を保存する時などに、「値を用意しない項目」を$guardedで指定する
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Message extends Model { protected $guarded = ['id']; } // データ保存時に['id']は除かれる // フォーム側で['id']を送信しなくともnullエラーが起きない逆に、「この値のみを保存したい」という時は$fillableで指定する
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Message extends Model { protected $fillable = ['chat_room_id', 'context', 'post_user_info_id']; } // 送信した値の中から、'chat_room_id', 'context', 'post_user_info_id'のみを保存し、それ以外の値は除かれるまとめ
指定時の挙動から、
$fillableは「ホワイトリスト」
$guardedは「ブラックリスト」
と言われているらしい。
- 投稿日:2020-09-26T12:37:33+09:00
Laravelとは+導入方法
今回はphpのフレームワークの中で最もポピュラーであるLaravelという物を紹介していきたいと思います。
フレームワークとは
そもそもフレームワークとはなんだろうと思われる方もいらっしゃると思いますので、まずフレームワークの説明をしていきたいと思います。
フレームワークとは概念的な意味で言うと「枠組み」と言う意味合いをもっています。あるいは、システム開発を楽に行えるようになるプログラムや雛形のことを意味します。このフレームワークを使う事により、開発時間の短縮化、複数人で開発を行う際にコードの統一化を図ることができ、効率的に開発を進めていく事ができます。
下記はphpのフレームワークと簡単な特徴を紹介します。1.Laravel
世界で人気のフレームワーク
2020年現在、国内において主流のPHPフレームワークであり日本語のドキュメントも充実しています。2.Cakephp
日本では最も利用されてきたPHPフレームワーク
Ruby on Railsの概念を取り入れて開発されたPHPのフレームワークで、セキュリティ対策が充実しているので商用アプリケーションに最適です。3.CodeIgniter
2006年にリリースされたPHPのフレームワークで、動的なWebサイトの開発に最適です。
必要に応じて随時機能追加していくような設計となっているので、軽量で高速動作するのが特徴です。4.Symfony
2007年にリリースされたRuby on Railsの概念とMojaviの思想を取り入れたPHPのフレームワークで、大規模なWebサービスを開発するのに最適です。
5.FuelPHP
FuelPHPは2011年にリリースされた比較的新しいPHPのフレームワークで、「規約より設定」を重視して設計されているので高度なWebアプリケーションの開発に適しています。
他にもフレームワークの種類はいくつかありますので興味のある方は是非調べてみてください。
この中で今回は最もポピュラーなLaravelを紹介していきます。Laravel
LaravelはMVCモデルに基づいてます。
MVCモデルとはM(Model),V(View),C(Contoroller),の頭文字をとったものです。
下記の流れで処理が実行されていきます。以下のような流れで処理が実行されていきます。①のリクエストの後にRoutingという物も存在します。それを介してContollerに処理を繋げていきます。
導入方法
まずMAMPのhtdocsに移動していきます。
$ cd /Applications/MAMP/htdocs/ここではcomposerを使うと簡単にインストールできますので、composerを使ってインストールしていきます。composerの導入は省略します。
$ composer global require laravel/installerこちらのコマンドでインストールできます。そして、次のコマンドでLavavelでblogという新しいプロジェクトを作成できます。
$ laravel new blogまた、ターミナルでComposerのcreate-projectコマンドを実行し、Laravelをインストールする方法もあります。
$ composer create-project --prefer-dist laravel/laravel blog終わりに
今回はLaravelを導入するまでの流れを紹介しました。次回は実際にLaravelを使って、一連の流れを紹介していきたいと思います。
参考サイト
https://kredo.jp/media/php-framework/
https://futurizm.jp/articles/191
https://readouble.com/laravel/7.x/ja/installation.html
https://www.ritolab.com/entry/49
- 投稿日:2020-09-26T10:49:12+09:00
【Laravel】バーコードを表示する
流れ
1、パッケージ選定
2、インストール
3、実装パッケージ選定
Packagistで「barcode Laravel」で検索します。
最上位に表示されている、ダウンロード数とスター数が一番多い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.*
の
間に記述がなかったので、ちょっと迷いました。試しに
Laravel6.*
扱いの下記コマンドで実行したところ、
無事インストールできました。composer require milon/barcode:"6.0"実装
バーコード表示のための準備で、
app.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は架空の数字です。)home.blade.php<?php echo $barcode ?>メソッドのgetBarcodeHTMLは、
第一引数に、コード
第二引数に、バーコードのタイプ
第三引数に、高さ
第四引数に、幅
第五引数に、色
第六引数に、下記にコードを表示するかどうかの真偽値をとる形ですね。
まとめ
少しつまるところもあったので、復習で記事にまとめました。おわり。