Отображение всех данных в виде таблицы с помощью 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'));
Я надеюсь, что это поможет вам. Спасибо