私は、Laravel、MVC、およびテンプレートエンジン全般についてはまったく初めてです。
ユーザーがログインしている場合、通知、ログアウト、プロファイルなどの特定のnavbarボタンとオプションを表示する必要があります。それ以外の場合は、ログインボタンを表示する必要があります。
正しい方法でこれに対処する方法についてのヘルプは大歓迎です。これは私が現時点で検討しているものです:
User
オブジェクトは常にビューに渡されます。User
が設定されている(ログインしていることを意味する)かどうかをチェックし、navbarに適切な部分的なブレードテンプレートを含めます。app.blade.php:
...
@if (isset($user))
@include('partials.navbarlogged')
@else
@include('partials.navbar')
...
これが最良の方法ですか?御時間ありがとうございます!
Laravel 5の組み込みのユーザーモデルを使用している場合は、単純に
@if (Auth::check())
//show logged in navbar
@else
//show logged out navbar
@endif
Laravel(執筆時点で5.6))の新しいバージョンは、Bladeで次の2つのディレクティブをサポートしています。
@auth
// The user is authenticated...
@endauth
@guest
// The user is not authenticated...
@endguest
こちらの公式ドキュメントを参照してください: https://laravel.com/docs/5.6/blade
laravel 5.7以降では、@ authおよび@guestディレクティブを使用します。公式ドキュメントはこちらです here
@auth
// The user is authenticated...
@endauth
@guest
// The user is not authenticated...
@endguest
@auth
および@guest
ディレクティブを使用するときにチェックする必要がある認証ガードを指定できます。
@auth('admin')
// The user is authenticated...
@endauth
@guest('admin')
// The user is not authenticated...
@endguest
それ以外の場合は、@ unlessディレクティブを使用できます。
@unless (Auth::check())
You are not signed in.
@endunless
Auth::guest()
を使用することもできます
Auth::guest()
メソッドはtrueまたはfalseを返します。
例-
@if (Auth::guest())
<a href="{{ route('login') }}">Login</a>
<a href="{{ route('register') }}">Register</a>
@else
{{ Auth::user()->name }}
<a href="{{ route('logout') }}">Logout</a>
@endif
Laravel 5.4から始まり、新しいブレードディレクティブ@includeWhen
これには、指定されたブール条件に基づいたビューが含まれます。
@includeWhen(Auth::check(), 'partials.navbarlogged')
@includeWhen(Auth::guest(), 'partials.navbar')
これは役立つはずです:
@extends(Auth::check() ? 'partials.navbarlogged' : 'partials.navbar')
Auth :: chek()は、ユーザーがログインしているかどうかを確認し、ブール値を返します。