kindle本「PHPエンジニアにおくるLaravel6予習入門」のまとめ。
点数
71点
感想
内容が少し薄いように感じた。
それでも簡単なWEBアプリを短時間で実装する場合は、この書籍の内容で充分だと思う。
ユーザー認証の実装方法の解説はとてもわかりやすかった。
ルーティング
ルーティングの確認
php artisan route:list
認証ミドルウェアを導入した場合など、route/web.php以外にルーティングが定義される場合もあるので、コマンドでの確認は役に立つことが多い。
ミドルウェア
VerifyCsrfTokenを除外したいURLの定義
app/Http/Middleware/VerifyCsrfToken.phpの$except配列にURIを追加する。
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
    /**
     * Indicates whether the XSRF-TOKEN cookie should be set on the response.
     *
     * @var bool
     */
    protected $addHttpCookie = true;
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        'hoge/*',
        'http://127.0.0.1:8000/hoge2/store',
    ];
}authミドルウェアとguestミドルウェア
app/Http/Kernel.phpの$routeMiddlewareでauthはAuthenticate, guestはRedirectIfAuthenticatedのクラスがそれぞれ定義されている。
ルート定義、コントローラのコンストラクタ、などで使用するミドルウェアを指定する。
public function __construct()
{
    $this->middleware('guest'); // guestミドルウェアを使用
}authミドルウェア
- 認証済かの判定。
- 会員用ページに設置する。
- 認証されていない場合、’login’ルートにリダイレクトされる。
guestミドルウェア
- 認証されていないかの判定。
- 会員登録ページなどに設置する。
- 認証済の場合、RouteServiceProvider::HOMEへリダイレクトされる。
ビュー
compact関数を使ってビューに変数を渡すと便利
public function index(Request $request)
{
  $var1 = 100;
  $var2 = 200;
  return view('index.index', compact('var1', 'var2'));
}ループ変数は@foreach内でのみ使うことができる
@foreach (['aaa', 'bbb', 'ccc'] as $num)
    {{ $loop->index }}:{{ $num }}
@endforeach改行
{!! nl2br($msg) !!}のようにする。
ユーザー認証
作成手順
- マイグレーションを実行しusersテーブルを作成するphp artisan migrate
- laravel/uiパッケージのインストールcomposer require laravel/ui
 (Laravel6の場合はcomposer require laravel/ui 1.*)
- scaffoldを実行php artisan ui vue --auth
 以下のファイル・ディレクトリが生成・更新される。
 ・app/Http/Controllers/HomeController.php app/Http/Controllers/Auth/
 ・resources/js/components/ExampleComponent.vue
 ・resources/views/auth/ resources/views/layouts/app.blade.php
 ・routes/web.php
 画面右上にLOGINとREGISTERのリンクが表示される。
- node.jsライブラリのインストールとコンパイルnpm install && npm run dev
 CSSが適用され、デザインが綺麗になる。
解説
app/Http/Controllers/Auth/RegisterController.php
use RegistersUsers; // メインロジックはRegistersUsersトレイトである
protected $redirectTo = RouteServiceProvider::HOME; // ユーザー登録後のリダイレクト先
public function __construct()
{
    $this->middleware('guest'); // guestミドルウェアを使用
}app/Http/Controllers/Auth/LoginController.php
use AuthenticatesUsers; // メインロジックはAuthenticatesUsersトレイトである
protected $redirectTo = RouteServiceProvider::HOME; // ログイン後のリダイレクト先
public function __construct()
{
    $this->middleware('guest')->except('logout');  // guestミドルウェアを使用(logoutの場合は除く)
}メールアドレスではなくユーザー名で認証する場合
- usersテーブルのnamカラムにuniqueインベックスを生成する。
- RegisterControllerのnameのバリデートルールにunique:usersを追加。
- LoginControllerでusernameメソッドを定義。
 AuthenticatesUsersトレイトのusernameメソッドはreturn 'email';となっているので、オーバーライドしてreturn 'name';とする。
ユーザー情報取得
Authファサードでログイン中ユーザーの情報を取得することができる。
use Auth;
としてAuth:id(); // usersのid
Auth::user(); // Userインスタンス

