Как сделать страницу доступной, даже если пользователь не залогинен - PullRequest
0 голосов
/ 21 марта 2019

У меня есть страница, которая является страницей компании и должна быть доступна, даже если пользователь не вошел в систему. Я использую шаблон блейда, который вызывается на всех других страницах.Моя проблема сейчас заключается в том, что у меня проблема с этим:

<div class="profimg fitimg">
     <img src="{{ Auth::user()->photo == null ? url('assets/images/profile.png') : Auth::user()->photo }}" alt="">
</div>

Будет возвращено сообщение об ошибке

Попытка получить свойство 'photo' не-объекта (Просмотреть: /var/www/resources/views/layouts/user/mypage.blade.php)

Эта часть моего шаблона получает фотографию профиля пользователя.В моем web.php это выглядит так:

Route::prefix('/')->group(function() {
    Route::get('company', function () {
        return view('user.company');
    });
});

И у меня также это есть, если пользователь вошел в систему.

Route::group(['middleware' => 'auth:user'], function () {
    //routes for auth user
});

Моя проблема сейчас в том, как я могу сделатьстраница общедоступная, даже если они не вошли в систему?И если они вошли в систему, я могу получить информацию об их профиле в моем шаблоне.Я думаю, что есть какое-то решение для этого, но я просто не могу понять это.

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

Рекомендуется передавать данные вместо прямого доступа к классу.Таким образом, если вы измените маршрут на этот -

Route::prefix('/')->group(function() {
    Route::get('company', function () {
        $data['user'] = Auth::user();
        return view('user.company', $data);
    });
});

Пользовательский элемент массива данных должен иметь некоторое значение, если пользователь вошел в систему. Затем вы можете проверить, есть ли у пользователя какие-либо данные, и изменить свой HTML какэто-

<div class="profimg fitimg">
    @if($user)
        <img src="{{ $user->photo }}" alt="{{ $user->name }}">
    @else
        <img src="{{ url('assets/images/profile.png') }}" alt="default profile image">
    @endif
</div>
0 голосов
/ 21 марта 2019

Во-первых, внутри лезвия ларавеллы вам не нужно помещать php-теги. Вместо этого вы должны использовать двойные фигурные скобки.

Если вы хотите полностью скрыть изображение, когда пользователь не вошел в систему, вы можете попробовать это:

@if(Auth::check())
    <img src=" {{ Auth::user()->photo ?? url('assets/images/profile.png') }} ">
@endif

Если вы хотите показать заполнитель, когда пользователь не вошел в систему, или если изображение не было установлено, попробуйте это:

@if(Auth::check() && !empty(Auth::user()->photo))
   <img src=" {{ Auth::user()->photo }} ">
@else
   <img src="{{ url('assets/images/profile.png') }}"
@endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...