2015-03-29 10 views
12

Sono completamente nuovo per Laravel, MVC e per i motori dei modelli in generale.Laravel 5: Modifica barra di navigazione se l'utente è registrato

Devo mostrare alcuni pulsanti e opzioni della barra di navigazione se un utente ha effettuato l'accesso come: Notifiche, Disconnessione, Profilo, ecc. E un pulsante Login altrimenti.

Qualsiasi aiuto su come posso affrontare questo nel modo giusto è molto apprezzato. Questo è quello che sto considerando in questo momento:

  • Un oggetto User viene sempre passato alla vista.
  • La vista controlla se è impostato lo User (ovvero è connesso) per includere il modello di lama parziale appropriato per la barra di navigazione.

app.blade.php:

... 
@if (isset($user)) 
    @include('partials.navbarlogged') 

@else 
    @include('partials.navbar') 
... 

È questo il metodo migliore? Grazie per il tuo tempo!

+0

avete creato il modello User te o stai usando di laravel costruito nel modello User? – Jbwilliams1

risposta

34

Se si utilizza laravel 5 incorporato nel modello User si può semplicemente fare

@if (Auth::check()) 
    //show logged in navbar 
@else 
    //show logged out navbar 
@endif 
+0

Non sto utilizzando i meccanismi di autenticazione predefiniti, quindi non funzionerà, avrò bisogno di trovare un modo per farlo funzionare con la mia autenticazione OpenID personalizzata. Ma sembra che io sia nella buona direzione in termini di tempistiche. Grazie per il tuo tempo! – shardl

+0

Eviterei di passare l'intero oggetto User in giro, quindi forse un piccolo helper di autenticazione è in ordine? Crea il tuo file di supporto in modo da poter eseguire tutto il codice disordinato, quindi nel modello potresti fare qualcosa come 'Auth :: check()' – Jbwilliams1

+0

Quale sarebbe il percorso consigliato per quella nuova classe? In realtà l'intero oggetto Utente non è necessario. Sarebbe ragionevole memorizzare i campi necessari da esso nella sessione (nome, image_url, email, ...) e leggere direttamente dalla sessione direttamente nella vista? Grazie ancora. – shardl

0

È inoltre possibile utilizzare Auth::guest()

Il metodo Auth::guest() restituisce true o false.

Esempio -

@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 
Problemi correlati