もしかして、最新のLaravelのバージョンを紹介できるのは初めて?いつも遅れて現在のひとつ前のバージョンを紹介してきたのですが、半年に1回のリリースが年に1回となり、さらに次のバージョンのリリースが遅れて、ついに私に追いつかれてしまったのです。
バージョン
毎回のように、まずサポートのスケジュールを見てみましょう。
なるほど次のバージョン9がLTS(長期サポート)となりますね。
新規プロジェクト
composerはすでにシステムにインストールされていると仮定して、以下のコマンドがl8xのディレクトリ名でLaravelをインストールします。ちなみに、phpは最低7.3のバージョンが必要です。私の環境ではすでに7.4なので大丈夫。
$ composer create-project --prefer-dist laravel/laravel:^8.0 l8x
ウェブサーバーなどが書き込みを行うディレクトリにはパーミッションが必要です。
$ cd l8x $ chmod -R a+w storage bootstrap/cache
以下を実行して、
$ php artisan serve
ブラウザでhttp://localhost:8000
にアクセスすると、ページを見ることができます。
前の7.xのバージョンとは変わりましたね。TailWind CSSの使用のためかな。
これ以降の変更をみるために、この時点でパージョン管理をしておきましょう。
$ cd l8x $ git init $ git add . $ git commit -am "init"
ユーザー認証のパッケージ
さて、ここからが前のバージョンと大幅に変わったところです。Laravelは基本的にいわゆるバックエンド、サーバーアプリなのですが、使用するフロントエンドにも好みがあり、TailWind、VueJS, LivewireをLaravelの認証のパッケージを積極的に採用しています。今までのLaravel UIパッケージの代わりに、Laravel Breezeの登場です。そよ風のように優しく(易しく?)インストールということでしょうか。
まず、必要なパッケージのインストールから、
$ composer require laravel/breeze --dev
次に、以下を実行して会員登録画面やログイン画面などを作成します。bladeだけでなく、vueやreactの指定も可能です。
$ php artisan breeze:install blade
これにより以下のファイルが追加あるいは編集されています。
new file: app/Http/Controllers/Auth/AuthenticatedSessionController.php new file: app/Http/Controllers/Auth/ConfirmablePasswordController.php new file: app/Http/Controllers/Auth/EmailVerificationNotificationController.php new file: app/Http/Controllers/Auth/EmailVerificationPromptController.php new file: app/Http/Controllers/Auth/NewPasswordController.php new file: app/Http/Controllers/Auth/PasswordResetLinkController.php new file: app/Http/Controllers/Auth/RegisteredUserController.php new file: app/Http/Controllers/Auth/VerifyEmailController.php new file: app/Http/Requests/Auth/LoginRequest.php modified: app/Providers/RouteServiceProvider.php new file: app/View/Components/AppLayout.php new file: app/View/Components/GuestLayout.php modified: composer.json modified: composer.lock modified: package.json modified: resources/css/app.css modified: resources/js/app.js new file: resources/views/auth/confirm-password.blade.php new file: resources/views/auth/forgot-password.blade.php new file: resources/views/auth/login.blade.php new file: resources/views/auth/register.blade.php new file: resources/views/auth/reset-password.blade.php new file: resources/views/auth/verify-email.blade.php new file: resources/views/components/application-logo.blade.php new file: resources/views/components/auth-card.blade.php new file: resources/views/components/auth-session-status.blade.php new file: resources/views/components/auth-validation-errors.blade.php new file: resources/views/components/button.blade.php new file: resources/views/components/dropdown-link.blade.php new file: resources/views/components/dropdown.blade.php new file: resources/views/components/input.blade.php new file: resources/views/components/label.blade.php new file: resources/views/components/nav-link.blade.php new file: resources/views/components/responsive-nav-link.blade.php new file: resources/views/dashboard.blade.php new file: resources/views/layouts/app.blade.php new file: resources/views/layouts/guest.blade.php new file: resources/views/layouts/navigation.blade.php modified: resources/views/welcome.blade.php new file: routes/auth.php modified: routes/web.php new file: tailwind.config.js new file: tests/Feature/Auth/AuthenticationTest.php new file: tests/Feature/Auth/EmailVerificationTest.php new file: tests/Feature/Auth/PasswordConfirmationTest.php new file: tests/Feature/Auth/PasswordResetTest.php new file: tests/Feature/Auth/RegistrationTest.php modified: webpack.mix.js
前バージョンよりインストールされるファイルの数が倍以上になっています。これは、ブレードのコンポーネント(ressources/views/components/*)を多用しているからです。コンポーネントはまだ実際に使用したことないですが、将来その日がやってきそうです。
今度は、javascriptやcssのトランスパイルのために、nodeのパッケージのインストールとwebpackの実行です。
$ npm install && npm run dev
次はDBの設定です。mysqlのコマンドを実行して、l8xのデータベースを作成します。
$ mysql -u root -p mysql> create database l8x;
.envファイルを次のように編集してDB情報を入れます。
DB_DATABASE=l8x
DB_USERNAME=DBユーザー名
DB_PASSWORD=DBパスワード
以下のコマンドを実行してDBテーブルを作成します。
$ php artisan migrate
以下のように、5つのテーブルが作成されます。
mysql> show tables; +------------------------+ | Tables_in_l8x | +------------------------+ | failed_jobs | | migrations | | password_resets | | personal_access_tokens | | users | +------------------------+ 5 rows in set (0.00 sec)
L7.xと比べて1つテーブルが増えていますね。personal_access_tokensのテーブルです。これはLaravel Sanctumで使用されるトークンのためらしい。楽しい将来の調査とします。
再度、ブラウザでhttp://localhost:8000/register
にアクセスします。
と入力して、「Register」ボタンをクリックすると、
新規会員登録成功です。
Laravel UIパッケージはどこへ?
さて、前バージョンまで使用していた、Laravel UIパッケージはもう使えないのでしょうか?
そんなことはないです。L8.xを対応しています。
しかし、残念なことにレガシー扱いになってしまいました。シンプルさが私には良かったのですが。
This legacy package is a very simple authentication scaffolding built on the Bootstrap CSS framework. While it continues to work with the latest version of Laravel, you should consider using Laravel Breeze for new projects. Or, for something more robust, consider Laravel Jetstream.
ちなみにパッケージのインストールは以下となります。もちろん、Laravel Breezeを削除してからのインストールとなりますので注意を。
$ composer require laravel/ui "^3.0"
$ php artisan ui bootstrap --auth
この後の手順は、上と同じです。
メルマガ購読の申し込みはこちらから。