Je suis complètement nouveau sur Laravel, MVC et les modèles de moteur en général.
Je dois afficher certains boutons et options de la barre de navigation si un utilisateur est connecté, tels que: Notifications, Déconnexion, Profil, etc ... et un bouton de connexion dans le cas contraire.
Toute aide sur la façon dont je pourrais résoudre ce problème de la bonne façon est grandement appréciée. Voici ce que j'envisage en ce moment:
User
est toujours transmis à la vue.User
est défini (ce qui signifie qu'il est connecté) pour inclure le modèle de lame partielle approprié pour la barre de navigation.app.blade.php:
...
@if (isset($user))
@include('partials.navbarlogged')
@else
@include('partials.navbar')
...
Est-ce la meilleure méthode? Merci pour votre temps!
Si vous utilisez Laravel 5's User model intégré, vous pouvez simplement faire
@if (Auth::check())
//show logged in navbar
@else
//show logged out navbar
@endif
Les nouvelles versions de Laravel (5.6 au moment de la rédaction) prennent en charge ces deux directives dans Blade:
@auth
// The user is authenticated...
@endauth
@guest
// The user is not authenticated...
@endguest
Voir la documentation officielle ici: https://laravel.com/docs/5.6/blade
Pour laravel 5.7 et supérieur, utilisez les directives @auth et @guest. Voici la documentation officielle ici
@auth
// The user is authenticated...
@endauth
@guest
// The user is not authenticated...
@endguest
Vous pouvez spécifier le garde d'authentification à vérifier lors de l'utilisation de @auth
et @guest
directives:
@auth('admin')
// The user is authenticated...
@endauth
@guest('admin')
// The user is not authenticated...
@endguest
Sinon, vous pouvez utiliser la directive @unless:
@unless (Auth::check())
You are not signed in.
@endunless
Vous pouvez également utiliser Auth::guest()
La méthode Auth::guest()
renvoie true ou false.
Exemple -
@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
À partir de Laravel 5.4 il y a une nouvelle directive de lame @includeWhen
qui inclut une vue basée sur une condition booléenne donnée:
@includeWhen(Auth::check(), 'partials.navbarlogged')
@includeWhen(Auth::guest(), 'partials.navbar')
Cela devrait aider:
@extends(Auth::check() ? 'partials.navbarlogged' : 'partials.navbar')
Auth :: chek () voit si l'utilisateur est connecté ou non et renvoie un booléen.