ブレードテンプレートを作成するとき、特定のページで表示、非表示にしたい場合があります。Laravelの認可機能ゲートとポリシーのひとつ、ゲートを使って、特定のページでは非表示にしていきます。
親記事
Dockerで環境構築して Laravel 9で CRUD 機能を作る
2022年03月15日
Laravelゲートを作成する
public function boot()
{
$this->registerPolicies();
Gate::define('identify', function () {
$pages = ['dashboard', 'top'];
return request()->routeIs($pages);
});
}
AuthServiceProvider.php クラスの bootメソッド内で定義します。
ここでは、ルートネームが dashboard、またはtopであると trueを返します。
名前付きルート
Route::get('/', function () {
return view('top');
})->name('top');
name メソッドで指定できます。
ブレードテンプレート内で使う
@can('identify')
// 表示
@else
// 非表示
@endcan
@cannot('update', $post)
@elsecannot('create', App\Models\Post::class)
@endcannot
ブレード内で @can で使用できます。
また@cannot や引数を渡すこともできます。