Отображение всех данных в виде таблицы с помощью Laravel 10

Я застрял с этой ошибкой около 3 часов либо с сообщением об ошибкеUndefined variable $certificatesилиCall to a member function isEmpty() on arrayили любые другие ошибки. На самом деле, я хочу отображать данные сертификата, принадлежащие пользователю, который входит в систему, а не все данные. Но я расстроился, поэтому я хочу отобразить все данные.

Вот мой SaveController.php

      <?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Certificate;
use Carbon\Carbon;
use Illuminate\Support\Facades\Auth;

class SaveController extends Controller
{
    function store(Request $r)
    {
        $now = Carbon::now();
        $format = $now->format('D j-M-Y g:i:s.u A');
        $user = Auth::user();
        $certificate = new Certificate();
        $certificate->user_id = $user->id;
        $certificate->name = $r->input('name');
        $certificate->sha512 = $r->input('sha512');
        $certificate->time = $format;
        $certificate->save();
        // $certificates = Certificate::where('user_id', $user->id)->orderBy('time')->get();
        $certificates = Certificate::all();
        return redirect('/')->with(compact('certificates'));
    }
}

а это мой index.blade.php

      <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="{{ asset('css/app.css') }}">
    <script src="{{ asset('js/app.js') }}"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script>
    <title>Non-Academic Digital Certificate Validator (SHA-512)</title>
</head>
<body>
    @guest
        <header>
            <h1 id="head1">Non-Academic Digital Certificate Validator (SHA-512)</h1>
            <div class="auth">
                <a href="/login"><button>Login</button></a>
                <a href="/register"><button>Register</button></a>
            </div>
        </header>
        <div class="input">
            <div id="droppable-zone">
                <div id="droppable-zone-wrapper">
                    <div id="droppable-zone-text">Drag & drop your certificate here OR click to browse</div>
                </div>
                <input class="droppable-file" id="input" type="file" accept="image/jpeg, image/png, application/pdf"
                    onchange="hash()">
            </div>
        </div>
        <div class="output">
            <textarea id="output" placeholder="SHA-512 Checksum" readonly></textarea>
        </div>
        <div class="remove">
            <button id="remove" onclick="clearInput()">Remove</button>
        </div>
    @endguest
    @auth
        <header>
            <h1 id="head1">Non-Academic Digital Certificate Validator (SHA-512)</h1>
            <div class="auth">
                <form class="search">
                    <input type="text" placeholder="Search...">
                </form>
                <form action="{{ route('logout') }}" method="POST">
                    @csrf
                    <button>Logout</button>
                </form>
            </div>
        </header>
        <div class="input">
            <div id="droppable-zone">
                <div id="droppable-zone-wrapper">
                    <div id="droppable-zone-text">Drag & drop your certificate here OR click to browse</div>
                </div>
                <input class="droppable-file" id="input" type="file" accept="image/jpeg, image/png, application/pdf" onchange="hash()">
            </div>
        </div>
        <div class="output">
            <textarea id="output" placeholder="SHA-512 Checksum" readonly></textarea>
        </div>
        <div class="remove">
            <button id="remove" onclick="clearInput()">Remove</button>
        </div>
        <div class="save">
            <form action="{{ route('save') }}" method="POST">
                @csrf
                <input type="hidden" name="name" id="namefile" readonly>
                <input type="hidden" name="sha512" id="hash" readonly>
                <button id="save" type="submit" disabled>Save</button>
            </form>
        </div>
        <table>
            <thead>
                <tr>
                    <th>Name</th>
                    <th>Date</th>
                    <th>SHA-512</th>
                </tr>
            </thead>
            <tbody>
                {{-- @if ($certificates->isEmpty())
                    <tr>
                        <td colspan="3">No Data</td>
                    </tr>
                @else --}}
                    @foreach ($certificates as $c)
                        <tr>
                            <td>{{ $c->name }}</td>
                            <td>{{ $c->time }}</td>
                            <td>{{ $c->sha512 }}</td>
                        </tr>
                    @endforeach
                {{-- @endif --}}
            </tbody>
        </table>
    @endauth
</body>
</html>

это мои маршруты web.php

      <?php

use App\Http\Controllers\RegisterController;
use App\Http\Controllers\LoginController;
use App\Http\Controllers\SaveController;
use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "web" middleware group. Make something great!
|
*/

Route::get('/', function () {
    return view('index');
});
Route::get('/register', [RegisterController::class, 'index']);
Route::post('/register', [RegisterController::class, 'store']);
Route::get('/login', [LoginController::class, 'index']);
Route::post('/login', [LoginController::class, 'auth']);
Route::post('/save', [SaveController::class, 'store'])->name('save');
Route::post('/logout', [LoginController::class, 'logout'])->name('logout');

Я также определил все классы на web.php.

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

1 ответ

Вы пытаетесь получить данные на индексной странице, для этого вам нужно изменить это

return redirect('/')->with(compact('сертификаты'));

к

return view('index')->with(compact('certificates'));

Я надеюсь, что это поможет вам. Спасибо

Другие вопросы по тегам