Users / index.blade. php и users / profile.blade. php не могут просматривать страницу просмотра профиля и пользователей, так как страница не может получить свойство «аватар» не-объекта. Я понятия не имел, почему, потому что раньше он работал очень хорошо, а теперь вдруг он просто перестал работать. Я попытался изменить пути к файлам для Avatar.png, но это не сработало.
Мне действительно нужна помощь, потому что мне нужно завершить sh этот проект за 2 дня!
UserController. php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Profile;
use App\User;
use Session;
use Auth;
class UserController extends Controller
{
public function __construct()
{
$this->middleware('admin')->except('my_profile', 'update');
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$users = User::all();
return view('users.index')->with('users', $users);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('users.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
if ($request->hasFile('avatar'))
{
$avatar = $request->avatar;
$filename = 'avatar-' . time() . '-' . $avatar->getClientOriginalName();
$avatar->move('uploads/profiles', $filename);
} else {
$filename = '';
}
$request->validate([
'name' => 'required',
'email' => 'required|email|unique:users',
'password' => 'required|min:8'
]);
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => bcrypt($request->password)
]);
Profile::create([
'user_id' => $user->id,
'avatar' => 'uploads/profiles/' . $filename,
//'facebook' => $request->facebook,
'about' => $request->about
]);
Session::flash('success', 'Successfully added user.');
return redirect()->route('users.index');
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$user = User::find($id);
return view('users.edit')->with('user', $user);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$request->validate([
'name' => 'required',
'email' => 'required|email',
]);
$user = User::find($id);
$user->name = $request->name;
$user->email = $request->email;
if (isset($request->password))
{
$user->password= bcrypt($request->password);
}
$user->save();
$profile = $user->profile;
if ($request->hasFile('avatar'))
{
$avatar = $request->avatar;
$filename = 'avatar-' . time() . '-' . $avatar->getClientOriginalName();
$avatar->move('uploads/profiles/', $filename);
$profile->avatar = 'uploads/profiles/' . $filename;
}
//$profile->facebook = $request->facebook;
$profile->about = $request->about;
$profile->save();
Session::flash('success', 'User profile was successfully edited.');
return redirect()->route('home');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$user = User::find($id);
$user->delete();
if (file_exists($user->profile->avatar))
{
unlink($user->profile->avatar);
}
$user->profile->delete();
Session::flash('success', 'User successfully deleted.');
return redirect()->back();
}
public function make_admin($id)
{
$user = User::find($id);
$user->Admin = 1;
$user->save();
Session::flash('success', 'User is now an admin.');
return redirect()->back();
}
public function remove_admin($id)
{
$user = User::find($id);
$user->Admin = 0;
$user->save();
Session::flash('success', 'User is no longer an admin.');
return redirect()->back();
}
public function my_profile()
{
$id = Auth::id();
$user = User::find($id);
return view('users.profile')->with('user', $user);
}
}
index.blade. php
@extends('layouts.app')
@section('content')
<div class="col-md-8">
<div class="card">
<div class="card-header">
Users
</div>
<div class="card-body">
<table class="table table-bordered table-condensed">
<thead>
<tr>
<th>Name</th>
<th>Email</th>
<th>Permissions</th>
<th>Avatar</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
@foreach ($users as $user)
<tr>
<td>{{ $user->name }}</td>
<td>{{ $user->email }}</td>
<td>
@if ($user->Admin)
<a
href="{{ route('remove.admin', $user->id) }}"
class="btn btn-danger btn-sm"
>
Remove admin
</a>
@else
<a
href="{{ route('make.admin', $user->id) }}"
class="btn btn-warning btn-sm"
>
Make admin
</a>
@endif
</td>
<td>
<img
src="{{ url($user->profile->avatar) }}"
alt=""
width="60"
height="60"
>
</td>
<td>
<a
href="{{ route('users.edit', $user->id) }}"
class="btn btn-warning btn-sm"
>
Edit
</a>
</td>
<td>
<form
action="{{ route('users.destroy', $user->id) }}"
method="POST"
>
@csrf
@method('DELETE')
<input
type="submit"
name="submit"
value="Delete"
class="btn btn-danger btn-sm"
>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
@endsection
profile.blade. php
@extends('layouts.app')
@section('content')
<div class="col-md-8">
<div class="card">
<div class="card-header">
Edit Your Profile
</div>
<div class="card-body">
@include('layouts.errors')
<form
action="{{ route('users.update', $user->id) }}"
method="POST"
enctype="multipart/form-data"
>
@csrf
@method('PUT')
<div class="form-group">
<label for="">Name</label>
<input
type="text"
name="name"
class="form-control"
value="{{ $user->name }}"
>
</div>
<div class="form-group">
<label for="">Email</label>
<input
type="email"
name="email"
class="form-control"
value="{{ $user->email }}"
>
</div>
<div class="form-group">
<label for="">Change Password</label>
<input
type="password"
name="password"
class="form-control"
>
</div>
<img
src="{{ url($user->profile->avatar) }}"
alt=""
width="50"
height="50"
>
<div class="form-group">
<label for="">Avatar</label>
<input
type="file"
name="avatar"
class="form-control"
>
</div>
<div class="form-group">
<label for="">Bio</label>
<textarea
name="about"
rows="5"
class="form-control"
>
{{ $user->profile->about }}
</textarea>
</div>
<div class="form-group">
<input
type="submit"
name="submit"
value="Update"
class="btn btn-success"
>
</div>
</form>
</div>
</div>
</div>
@endsection
вот ошибка:
![The Error](https://i.stack.imgur.com/oxxE4.png)