Попытка получить свойство 'аватар' необъекта - Laravel 6 - PullRequest
0 голосов
/ 01 февраля 2020

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...