Laravel 9, неопределенная переменная $users

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

И извините, если в прошлом на эту проблему часто отвечали, я не нашел ни одного решения, которое сработало бы для меня, я сижу над этой проблемой сейчас 2 дня (я чувствую себя немного глупо).

Все сообщения об ошибках.

Неопределенная переменная $users

Строка: 11 в usercrud.blade.php

@foreach ($users как $user)

\resources\views\includes\users\usercrud.blade.php: 11  

\resources\views\includes\users\usercrud.blade .php: 11 требуется

Illuminate\Foundation\Bootstrap\HandleExceptions: 11 handleError

\resources\views\admin\dashboard.blade.php:8 требуется

приложение -> http -> контроллер -> UserController

<?php

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;

class UserController extends Controller
{
    public function index()
    {
        $users = User::orderBy('id')->paginate(10); 
        return view('includes.users.usercrud', compact('users'));
    }

    public function create()
    {
        return view('includes.users.create');
    }

    public function store(Request $request)
    {
    
        $request->validate([
            'name' => 'required',
            'email' => 'required|email|unique:users',
            'password' => 'required',
           
        ]);

       
        User::create($request->all());

        return redirect()->route('includes.users.usercrud')
            ->with('success', 'User created successfully.');
    }

    public function edit(User $user)
    {
        return view('includes.users.edit', compact('user'));
    }

    public function update(Request $request, User $user)
    {
        
        $request->validate([
            'name' => 'required',
            'email' => 'required|email|unique:users,email,' . $user->id,
           
        ]);

        
        $user->update($request->all());

        return redirect()->route('includes.users.usercrud')
            ->with('success', 'User updated successfully.');
    }

    public function destroy(User $user)
    {
       
        $user->delete();

        return redirect()->route('includes.users.usercrud')
            ->with('success', 'User deleted successfully.');
    }
}

просмотры -> включает -> пользователи -> usercrud.blade.php

<h1>User List</h1>
<a href = "{{ route('includes.users.create') }}">Create New User</a>
<table border = "1">
    <tr>
        <th>ID</th>
        <th>Name</th>
        <th>Email</th>
        <th>Role</th>
        <th>Actions</th>
    </tr>
    @foreach ($users as $user)
        <tr>
            <td>{{ $user->id }}</td>
            <td>{{ $user->name }}</td>
            <td>{{ $user->email }}</td>
            <td>{{ $user->role }}</td>
            <td>
                <a href = "{{ route('includes.users.edit', $user->id) }}">Edit</a>
                <form method = "POST" action = "{{ route('includes.users.destroy', $user->id) }}">
                    @csrf
                    @method('DELETE')
                    <button type = "submit">Delete</button>
                </form>
            </td>
        </tr>
    @endforeach
</table>

{{ $users->links() }}

просмотры -> администратор -> Dashboard.blade.php

@extends('layouts.app')

@section('content')
    <div class = "container mt-4 text-light">
        <h2>Welcome to the Admin Dashboard!</h2>
    </div>
    <div>
        @include('includes.users.usercrud')
    </div>
@endsection

маршруты -> Интернет

use App\Http\Controllers\AuthController;
use App\Http\Controllers\AdminController;
use App\Http\Controllers\UserController;
use App\Http\Middleware\AdminMiddleware;

Route::group(['middleware' => ['admin']], function () {
    Route::get('admin/dashboard', [AdminController::class, 'adminDashboard'])->name('admin.dashboard');
    Route::get('/users', [UserController::class, 'index'])->name('includes.users.usercrud');
    Route::get('/users/create', [UserController::class, 'create'])->name('includes.users.create');
    Route::post('/users/store', [UserController::class, 'store'])->name('includes.users.store');
    Route::get('/users/{user}/edit', [UserController::class, 'edit'])->name('includes.users.edit');
    Route::put('/users/{user}', [UserController::class, 'update'])->name('includes.users.update');
    Route::delete('/users/{user}', [UserController::class, 'destroy'])->name('includes.users.destroy');
});

Я уже пробовал много других методов из stackoverflow, но по какой-то причине у меня это не сработало. Также посмотрел глобальные переменные, но они тоже не работают.

🤔 А знаете ли вы, что...
PHP поддерживает расширения для работы с множеством сторонних сервисов и API.


125
1

Ответ:

Решено

Проблема в том, что вы включаете crud пользователей в панель мониторинга, но контроллер adminDashboard не передает список пользователей для использования при отображении раздела панели мониторинга.

Убедитесь, что везде, где вы хотите отобразить список пользователей, вы передаете этот список из контроллера.

Недостаточно передать список пользователей из UserController, поскольку вы никогда не получаете доступ к этому контроллеру, когда показываете панель мониторинга из контроллера adminDashboard.