web-dev-qa-db-fra.com

Laravel 5: Changer la barre de navigation si l'utilisateur est connecté

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:

  • Un objet User est toujours transmis à la vue.
  • La vue vérifie si 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!

28
bockzior

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
59
Jbwilliams1

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

22

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
20
brianokinyi

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
6
Rohan Khude

À 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')
2
Paulus Otto Harman

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.

1
bohemianjock