Попытка получить свойство 'изображение' не-объекта - PullRequest
0 голосов
/ 09 июля 2020

В контроллере

public function index()
{
    $profile = Profile::where('user_id', auth()->user()->id)->first();
    return view('profile', compact('profile'));
}

В Blade View

 <div class="card mb-5">
      <img class="card-img-top" src="{{ asset('images/'.$profile->image ? $profile->image : "" ) }}"
        alt="Profile User">
      <div class="card-body">
        <h5 class="card-title">{{Auth::user() ? Auth::user()->name :""}}</h5>
        <p class="card-text">{{Auth::user() ?Auth::user()->email :""}}.</p>
      </div>
      <ul class="list-group list-group-flush">
        <li class="list-group-item">{{$profile ? $profile->gender :"Belum Di isi"}}</li>
        <li class="list-group-item">{{$profile ? $profile->phone :"Belum Di isi"}}</li>
        <li class="list-group-item">{{$profile ? $profile->address :"Belum Di isi"}}</li>
      </ul>
    </div>

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

Ответы [ 2 ]

0 голосов
/ 09 июля 2020

Сделайте проверку аутентификации перед использованием аутентификации.
Используйте firstOrFail вместо first, при получении нулевого значения будет выдана ошибка 404:

use Illuminate\Support\Facades\Auth;

public function index()
{
    if (Auth::check())
    {
        $profile = Profile::where('user_id', Auth::id())->firstOrFail();
        return view('profile', compact('profile'));
     } else {
        return "You are not logged in";
    }
}
0 голосов
/ 09 июля 2020

Ошибка возникает, потому что ваша переменная $profile не является объектом, это может быть array или null. Попробуйте dd($profile), чтобы убедиться, что вы передаете объект

, если вы передаете объект, попробуйте изменить свой код следующим образом, если вы передаете объект

  <img class="card-img-top" src="{{ asset('images/' . $profile ? $profile->image : "" )}}"/>

или как показано ниже если вы передаете массив

 <img class="card-img-top" src="{{ asset('images/' . isset($profile['image'] ? $profile['image'] : "" )}}"/>
...