I\'m completely new to Laravel, MVC and templating engines in general.
I need to show certain navbar buttons and options if a user is logged in such as: Notifications, L
This should help :
@extends(Auth::check() ? 'partials.navbarlogged' : 'partials.navbar')
The Auth::chek() sees whether the user is logged in or not and returns a boolean.
You can also use Auth::guest()
The Auth::guest()
method returns true or false.
Example -
@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
Starting from Laravel 5.4 there's new blade directive @includeWhen
which includes view based on a given boolean condition :
@includeWhen(Auth::check(), 'partials.navbarlogged')
@includeWhen(Auth::guest(), 'partials.navbar')
New versions of Laravel (5.6 at time of writing) support these two directives in Blade:
@auth
// The user is authenticated...
@endauth
@guest
// The user is not authenticated...
@endguest
See official documentation here: https://laravel.com/docs/5.6/blade
If you are using Laravel 5's built in User model you can simply do
@if (Auth::check())
//show logged in navbar
@else
//show logged out navbar
@endif
For laravel 5.7 and above, use @auth and @guest directives.Here is the official documentation here
@auth
// The user is authenticated...
@endauth
@guest
// The user is not authenticated...
@endguest
You may specify the authentication guard that should be checked when using the @auth
and @guest
directives:
@auth('admin')
// The user is authenticated...
@endauth
@guest('admin')
// The user is not authenticated...
@endguest
Otherwise, you can use the @unless directive:
@unless (Auth::check())
You are not signed in.
@endunless