権限について
AuthServiceProvider の boot() で定義
定義の方法は、
Gate::define(‘ゲートの名前’, function($user) {
return 判断結果;
}
使うときは、
・コントローラのコンストラクターで $this->middleware(‘can:ゲートの名前’);
・コントローラのメソッドで、$this->authorize(‘ゲートの名前’);
・権限は、ゲートの名前が存在しないとき、権限エラー403になる。
権限のfunction内に、dd($user) を書いて、デバッグ表示されなかったら呼ばれてない。
例えば
Gate::define(‘ゲートの名前’, function($user) {
dd($user);
return 判断結果;
}
と書いて、
$this->authorize(‘ゲートの名前aa’);
のように、呼び出しの名前が間違えていたときの判断にddが使えます。
管理者ページのユーザ一覧
ユーザ一覧だけでなく、詳細表示したり、編集などする予定があるときは、コントローラを追加するのが良い。この場合、UserController を作成するのが良い。
・laravelの設計方針として、リソースコントローラがあるので利用するのが、機械的に作れて便利。
一覧(index)、詳細(show)、作成(create)、保存(store)、編集(edit)、更新(update)、削除(destroy) の7つの動作を利用できる。
URLやルートの名前も自動で作成するのが良い。
・web.php には、
Route::resource(‘user’, ‘UserController’);
で一気に作成可能。
・コントローラ作るときはモデルを指定してリソースコントローラを作成する。
php artisan make:controller UserController -r -m User
-r はリソースコントローラ、-m はモデルを指定
覚えてないときは、php artisan make:controller -h と、-h オプションでヘルプを見ると良い。
ビュー
viewファイルの中で複雑な条件分岐などをつけない。
コントローラでできる部分、モデルでできる部分は、そっちに処理を書いて、viewファイルは簡略化してかけるようにします。
・carbon format
$left = new Carbon($user->created_at);
のとき、
$left->format(‘Y/m/d H:i:s’);
で、文字列で年月日 時分秒が取得可能。
コメント