2015-03-29 4 views
12

Я совершенно новый для двигателей Laravel, MVC и шаблонов в целом.Laravel 5: изменить навигацию, если пользователь зарегистрирован

Мне нужно показать определенные кнопки и параметры навигатора, если пользователь зарегистрировался, например: Уведомления, Выход из системы, Профиль и т. Д. И т.д.

Любая помощь в отношении того, как я мог бы это правильно решить, очень ценится. Это то, что я рассматриваю на данный момент:

  • User объект всегда передается в представлении.
  • Вид проверяет, установлен ли User (что означает его вход в систему), чтобы включить соответствующий шаблон частичного лезвия для навигационной панели.

app.blade.php:

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

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

Это лучший метод? Спасибо за ваше время!

+0

ли вы создать модель самостоятельно, или вы используете Laravel встроенный в модели пользователя? – Jbwilliams1

ответ

34

Если вы используете Laravel 5 встроенных в модели пользователя, вы можете просто сделать

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

Я не использую механизмы Auth по умолчанию, поэтому это не сработает, вам нужно будет найти способ заставить его работать с моей пользовательской аутентификацией OpenID. Но похоже, что я хорошо разбираюсь в шаблонах. Спасибо за ваше время! – shardl

+0

Я бы избегал пропускать весь объект User вокруг, так что, может быть, небольшой помощник аутентификации в порядке? Создайте свой собственный вспомогательный файл, чтобы вы могли сделать весь беспорядочный код там, поэтому в шаблоне вы можете сделать что-то вроде 'Auth :: check()' – Jbwilliams1

+0

. Каким будет рекомендуемое место для этого нового класса? Фактически весь объект пользователя не нужен. Было бы разумно хранить в нем необходимые поля в сеансе (имя, image_url, email, ...) и читать с сессии непосредственно в представлении? Еще раз спасибо. – shardl

0

Вы также можете использовать Auth::guest()

Метод Auth::guest() возвращает истину или ложь.

Пример -

@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 
Смежные вопросы