カテゴリー
Laravel

Laravel ログ出力

確認環境:

Windows10、Laravel 7.30.4、PHP 7.2.33、MySQL 5.7.30

Laravelのログ出力の設定ファイル

config\logging.php

ログ出力レベル

8つのレベルがある。上のものほど重要度が高い。

Log::emergency($message);
Log::alert($message);
Log::critical($message);
Log::error($message);
Log::warning($message);
Log::notice($message);
Log::info($message);
Log::debug($message);

参考サイト

Laravel 7.x ログ

RFC 5424規約

カテゴリー
Laravel

LaravelでGmail認証をする

確認環境:

Windows10、Laravel 7.30.4、PHP 7.2.33、MySQL 5.7.30、Gmail

多くのWebアプリケーションは、利用開始時にユーザーのメールアドレスを確認する必要がありますが、Laravelで、とても簡単にメール認証の機能が実装できます。

1) Loginページを作る

上記ページの手順でLoginページを作っておきます。

2) UserモデルにMustVerifyEmailインターフェースを追加する

app\User.php

namespace App;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class User extends Authenticatable implements MustVerifyEmail
{
    use Notifiable;
    // ...
}

class User extends Authenticatable

の後ろに implements MustVerifyEmail
を追加する。

3)web.phpにルートパラメータを追加する

routes\web.php

Auth::routes(['verify' => true]);
  1. Loginページを作る でAuth::routes は自動で作られるので、引数に ['verify' => true] を追加する。

4) .envファイルにGmail用の設定をする。

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=任意のGmailアドレス
MAIL_PASSWORD=下記参照
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=任意のGmailアドレス(MAIL_USERNAMEと同じアドレス)
MAIL_FROM_NAME="${APP_NAME}"

自分のGoogleアカウントのセキュリティでアプリパスワードを取得します。

注意点は、2段階認証を選択しておくことです。

取得したアプリパスワードを.envファイルの「MAIL_PASSWORD」に設定します。

5) サイトにアクセスし、新規にユーザー登録する。

ユーザー登録した後、登録時に指定したメールアドレス(Gmail)を確認します。

以下の認証メールが届いていることを確認します。

Verify Email Address ボタンを押すと、認証処理が行われ

/home画面にリダイレクトします。

これだけで、メール認証機能が作れます。すごいシンプルです。

参考サイト

Laravel 7.x 認証

Laravel 7.x メール確認

カテゴリー
Laravel

Laravel Bladeファイルの書き方

ベースのbladeファイル

app.blade.php

<!-- resources/views/layouts/app.blade.phpとして保存 -->

<html>
    <head>
        <title>アプリ名 - @yield('title')</title>
    </head>
    <body>
        @section('sidebar')
            ここがメインのサイドバー
        @show

        <div class="container">
            @yield('content')
        </div>
    </body>
</html>

子のbladeファイル

child.blade.php

<!-- resources/views/child.blade.phpとして保存 -->

@extends('layouts.app')

@section('title', 'Page Title')

@section('sidebar')
    @@parent

    <p>ここはメインのサイドバーに追加される</p>
@endsection

@section('content')
    <p>ここが本文のコンテンツ</p>
@endsection

参考サイト

Laravel 7.x Bladeテンプレート

カテゴリー
Laravel

LaravelでLoginページを作る

確認環境:

Windows10、Laravel 7.30.4、PHP 7.2.33、MySQL 5.7.30

Loginページを作る

まずは、Laravelプロジェクト(ver 7.*)を新規作成する

composer create-project --prefer-dist laravel/laravel larademo01 "7.*"

以下のコマンドで、Loginページ(認証機能)を追加する

composer require laravel/ui
php artisan ui vue --auth

公式サイトによると、このコマンドは、プロジェクト新規作成直後に行うことを勧めています。

このように、コマンド1発で必要なものが準備できることを、スカフォールディングという。

多分、Ruby on Railsなんかでも、スカフォールディングという言葉は使うと思う。

php artisan serve

すると、自動的に以下の4つテーブルが作成されます。

Login時に登録したユーザーは、userテーブルに登録されます。

http://127.0.0.1:8000

にアクセスする。

以下のように、画面右上に、LOGINとREGISTERが表示される。

DBの設定

REGISERページに移動して、ユーザー登録してみる。

エラーになる。

Illuminate\Database\QueryException
SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO) (SQL: select count(*) as aggregate from `users` where `email` = 0gravity000@gmail.com)
http://127.0.0.1:8000/register

原因はDB設定をしていないため。

なので、MySQLでDB設定をする。

.envファイルを編集する

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=larademo01
DB_USERNAME=root
DB_PASSWORD=pass

MySQLのルートユーザーでログインする

ここでルートユーザーのパスワードを入力する

 mysql -u root -p

MySQLでデータベースを新規作成する。

create database larademo01;
use larademo01;

laravelでmigrateする

php artisan migrate

MySQLでテーブルが出来ているか確認する

show tables;

4つテーブルが出来ている。usersテーブルにユーザーが登録される。

+----------------------+
| Tables_in_larademo01 |
+----------------------+
| failed_jobs          |
| migrations           |
| password_resets      |
| users                |
+----------------------+
4 rows in set (0.00 sec)

php artisan serve をし直して、

http://127.0.0.1:8000

にアクセスする。

REGISERページに移動して、ユーザー登録する。

今度は成功する。

MySQL Workbenchで確認する。

usersテーブルに登録したユーザーが登録されている。

リダイレクトパスのカスタマイズ

認証に成功すると、

/home URIへリダイレクトします。

認証後のリダイレクトパスをカスタマイズするには、

RouteServiceProvider の中で

HOME 定数を定義する。

\app\Providers\RouteServiceProvider.php

    /**
     * The path to the "home" route for your application.
     *
     * @var string
     */
    public const HOME = '/home';

認証名のカスタマイズ

デフォルトでは、email フィールドを認証に利用している。

変更するには、LoginController で username メソッドを定義する。

\app\Http\Controllers\Auth\LoginController.php

public function username()
{
    return 'username';
}

ガードのカスタマイズ

???

バリデーション/保管域のカスタマイズ

\app\Http\Controllers\Auth\RegisterController.php

    /**
     * Get a validator for an incoming registration request.
     *
     * @param  array  $data
     * @return \Illuminate\Contracts\Validation\Validator
     */
    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'min:8', 'confirmed'],
        ]);
    }

    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return \App\User
     */
    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
    }

参考サイト

Laravel 7.x 認証

カテゴリー
Laravel

Laravelで非同期処理をする

参考サイト:

Laravel 7.x キュー

Laravel 7.x Redis

Laravel 7.x サービスコンテナ

Laravel 7.x サービスプロバイダ

Laravel 7.x ミドルウェア

Laravelでキューってみる

laravel非同期処理(キュー)をお手軽に使ってみた

カテゴリー
Laravel

Laravel ミドルウェア

参考サイト:

Laravel 7.x ミドルウェア

カテゴリー
Laravel

Laravel Mix LaravelでJavaScriptを使う

確認環境:

Windows10、Laravel 7.30.4

フロントエンドにVue.js、バックエンドにLaravel という環境が使いやすい

Laravelはphpのフレームワーク

JavaScriptやCSSをがっつり使いたいなら、Laravel Mixを使う

Laravel MixはWebpackをベースとしている

Laravel Mixを使うには、Node.jsとnpmをあらかじめインストールしておく

webpack.mix.js を編集する

デフォルトは以下

mix.js('resources/js/app.js', 'public/js')
    .sass('resources/sass/app.scss', 'public/css');

CSSを使いたい場合

mix.styles([
    'public/css/vendor/normalize.css',
    'public/css/vendor/videojs.css'
], 'public/css/all.css');

JavaScriptを使いたい場合

mix.js('resources/js/app.js', 'public/js');

Laravel Mixを実行する

// 全タスク実行
npm run dev

// 全タスク実行を実行し、出力を圧縮
npm run production

コンパイルされたjs、cssが

/public/js、public/css に出力される

このファイルをバンドルファイルと呼ぶ

webpackが、複数のモジュールを1つにまとめたファイルを出力する(モジュールバンドラ)

参考サイト:
Laravel 7.x アセットのコンパイル(Mix)

カテゴリー
Laravel

Laravelのタイムゾーン設定

環境

Laravel 7.*

Laravelのデフォルトのタイムゾーン設定はUTC(協定世界時)です。

UTC(協定世界時)とは、世界各地の標準時を決めるときの基準となる「世界標準時」のことです。

たとえば日本の標準時(JST)は「UTC」よりも 9時間進んでいるため「UTC+09:00」と表示されます。

タイムゾーンを日本時間に変更するには

/プロジェクト名/config/app.php

'timezone' => 'UTC',

'timezone' => 'Asia/Tokyo',

に変更します。

カテゴリー
php

xserverでphpとかのパスを通す方法

xserverでphpやpythonのコマンドパスは

xserver コマンドパス一覧

の通りですが、これををいちいち

/usr/bin/php7.4

とか絶対パスを指定しなくて済む方法をメモしておきます。

確認環境:

xserver X10プラン

1.ホームディレクトリに「bin」フォルダを作成

mkdir $HOME/bin

2.シンボリックリンクを作成する

例1)PHP7.3を指定する場合

ln -s /usr/bin/php7.3 $HOME/bin/php

例2)Python3.6を指定する場合

ln -s /usr/bin/python3.6 $HOME/bin/python

確認としては「bin」フォルダで

ls -al

して、こんなふうにシンボリックリンクが表示されれば成功です。

なお、シンボリックリンクの削除は

上の例の場合なら、~/binに移動して

unlink php

でできます。

3.bashrcにパスを通す記述を追記

viエディタで.bashrcファイルを起動する

viエディタの使い方はこちらを参考に

vi ~/.bashrc

.bashrcファイルの最終行に以下を追加して保存

export PATH=$HOME/bin:$PATH

4.変更内容を反映させる

source ~/.bashrc

5.反映されているかを確認

設定した内容が反映されているか

phpの場合、以下のコマンドでバージョンが表示されればOKです。

php -v

pythonの場合、以下のコマンドでPython対話シェルが起動すればOKです。

python

カテゴリー
Laravel

Bulmaのハンバーガーメニューが出ない

確認環境

Mac OS

Bulma

Laravel 5.7

XServer

XserverにLaravelをインストールしました。

レスポンシブWebサイトにしたいので、Bulma(ブーマ)を使ってみました。

しかし、navbarのハンバーガーメニューをクリックしてもメニューがなぜか表示されませんでした。

調べてみた結果、公式サイトでは、npmを使ってBulmaのパッケージをインストールすることを推奨しているのですが、私はこの方法でBulmaを使用していないので、どうもそれが原因みたいです。

なので、

以下のように修正してみました。