Ответ 1
Если вы используете Laravel 5, встроенную в модель User, вы можете просто сделать
@if (Auth::check())
//show logged in navbar
@else
//show logged out navbar
@endif
Я совершенно не знаком с Laravel, MVC и шаблонами в целом.
Мне нужно показать определенные кнопки и параметры навигатора, если пользователь зарегистрировался, например: "Уведомления", "Выход из системы", "Профиль" и т.д.) и кнопку "Вход" в противном случае.
Любая помощь в том, как я мог бы решить эту проблему, очень ценится. Это то, что я сейчас рассматриваю:
User
всегда передается в представление.User
(то есть он зарегистрирован), чтобы включить соответствующий шаблон частичного клинка для навигационной панели.app.blade.php:
...
@if (isset($user))
@include('partials.navbarlogged')
@else
@include('partials.navbar')
...
Это лучший метод? Спасибо за ваше время!
Если вы используете Laravel 5, встроенную в модель User, вы можете просто сделать
@if (Auth::check())
//show logged in navbar
@else
//show logged out navbar
@endif
Новые версии Laravel (5.6 на момент написания) поддерживают следующие две директивы в Blade:
@auth
// The user is authenticated...
@endauth
@guest
// The user is not authenticated...
@endguest
Смотрите официальную документацию здесь: https://laravel.com/docs/5.6/blade
Для Laravel 5,7 и выше, использование @auth и @guest directives.Here является официальной документацией здесь
@auth
// The user is authenticated...
@endauth
@guest
// The user is not authenticated...
@endguest
Вы можете указать @auth
аутентификации, которую следует проверять при использовании директив @auth
и @guest
:
@auth('admin')
// The user is authenticated...
@endauth
@guest('admin')
// The user is not authenticated...
@endguest
В противном случае вы можете использовать директиву @unless:
@unless (Auth::check())
You are not signed in.
@endunless
Вы также можете использовать Auth::guest()
Метод Auth::guest()
возвращает true или false.
Пример -
@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
Начиная с Laravel 5.4, появилась новая директива blade- @includeWhen
которая включает представление, основанное на заданном логическом условии:
@includeWhen(Auth::check(), 'partials.navbarlogged')
@includeWhen(Auth::guest(), 'partials.navbar')
Это должно помочь:
@extends(Auth::check() ? 'partials.navbarlogged' : 'partials.navbar')
Auth :: chek() видит, вошел ли пользователь в систему или нет, и возвращает логическое значение.