Inventaris Lab Laravel 12 : Bagian #04 - MEMBUAT HALAMAN DASHBOARD DINAMIS
Belajar Bareng Minarsih - Edisi Ngoding
09 Oktober 2025
Tujuan: Di bagian sebelumnya, kita telah berhasil menyiapkan "kerangka" aplikasi. Anda mungkin bertanya, "Apa gunanya melakukan semua ini jika hasilnya sama saja?" Manfaat sesungguhnya dari Blade Templating akan kita buktikan sekarang, saat kita mulai membuat halaman dashboard fungsional dengan sangat cepat dan terstruktur menggunakan pola MVC.
Pertama, kita siapkan "otak" dan "jalan" untuk halaman dashboard kita.
php artisan make:controller DashboardController
use App\Http\Controllers\DashboardController;
Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
Route::get('/', function () {
return redirect()->route('dashboard');
});
Sekarang kita isi DashboardController untuk mengambil data dari database dan mengirimkannya ke tampilan.
use App\Models\Item;
use App\Models\Loan;
use App\Models\User;
<?php
namespace App\Http\Controllers;
use App\Models\Item;
use App\Models\Loan;
use App\Models\User;
use Illuminate\Http\Request;
class DashboardController extends Controller
{
// Variabel untuk data umum
protected $title = 'Dashboard';
protected $menu = 'dashboard';
protected $directory = 'admin.dashboard';
public function index()
{
// Menyiapkan array untuk dikirim ke view
$data['title'] = $this->title;
$data['menu'] = $this->menu;
// Mengambil data dari database
$data['total_siswa'] = User::where('role', 'Siswa')->count();
$data['total_item'] = Item::count();
$data['total_loan'] = Loan::where('status', 'Dipinjam')->count();
// Me-return view beserta data
return view($this->directory . '.index', $data);
}
}
Penjelasan Singkat:
Data sudah siap, sekarang kita buat tampilannya.
@extends('admin.layouts.app')
{{-- CSS --}}
@section('css')
@endsection
{{-- Konten Utama --}}
@section('content')
<div class="row">
{{-- Total Siswa --}}
<div class="col-lg-4">
<div class="card">
<div class="card-body">
<div class="row align-items-start">
<div class="col-8">
<h5 class="card-title mb-9 fw-semibold"> Total Siswa </h5>
<h4 class="fw-semibold mb-3">{{ $total_siswa }}</h4>
</div>
<div class="col-4">
<div class="d-flex justify-content-end">
<div
class="text-white bg-secondary rounded-circle p-6 d-flex align-items-center justify-content-center">
<i class="ti ti-users fs-6"></i>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{{-- Total Item --}}
<div class="col-lg-4">
<div class="card">
<div class="card-body">
<div class="row align-items-start">
<div class="col-8">
<h5 class="card-title mb-9 fw-semibold"> Total Item </h5>
<h4 class="fw-semibold mb-3">{{ $total_item }}</h4>
</div>
<div class="col-4">
<div class="d-flex justify-content-end">
<div
class="text-white bg-primary rounded-circle p-6 d-flex align-items-center justify-content-center">
<i class="ti ti-box fs-6"></i>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{{-- Total Pinjaman --}}
<div class="col-lg-4">
<div class="card">
<div class="card-body">
<div class="row align-items-start">
<div class="col-8">
<h5 class="card-title mb-9 fw-semibold"> Total Pinjaman </h5>
<h4 class="fw-semibold mb-3">{{ $total_loan }}</h4>
</div>
<div class="col-4">
<div class="d-flex justify-content-end">
<div
class="text-white bg-warning rounded-circle p-6 d-flex align-items-center justify-content-center">
<i class="ti ti-alarm fs-6"></i>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
{{-- JavaScript --}}
@section('js')
@endsection
Penjelasan: Kode di atas adalah potongan HTML dari template-admin (file index.html) yang sudah kita sesuaikan. Perhatikan bagaimana kita menampilkan data yang dikirim dari controller menggunakan {{ $total_siswa }}, {{ $total_item }}, dan {{ $total_loan }}.
Setelah halaman dashboard kita berfungsi dan menampilkan data, sekarang saatnya merapikan menu navigasi (sidebar) agar sesuai dengan kebutuhan aplikasi SIMINLAB dan membuatnya interaktif. Kita ingin menu yang aktif saat ini memiliki tanda visual (misalnya, warna latar yang berbeda).
<ul id="sidebarnav">
<li class="nav-small-cap">
<i class="ti ti-dots nav-small-cap-icon fs-4"></i>
<span class="hide-menu">Home</span>
</li>
<li class="sidebar-item">
<a class="sidebar-link" href="./index.html" aria-expanded="false">
<span>
<i class="ti ti-layout-dashboard"></i>
</span>
<span class="hide-menu">Dashboard</span>
</a>
</li>
</ul>
<ul id="sidebarnav">
<li class="nav-small-cap">
<i class="ti ti-dots nav-small-cap-icon fs-4"></i>
<span class="hide-menu">Home</span>
</li>
<li class="sidebar-item {{ Request::is('dashboard') ? 'selected' : '' }}">
<a class="sidebar-link {{ Request::is('dashboard') ? 'active' : '' }}" href="{{ route('dashboard') }}" aria-expanded="false">
<span>
<i class="ti ti-layout-dashboard"></i>
</span>
<span class="hide-menu">Dashboard</span>
</a>
</li>
</ul>
Penjelasan Singkat:
Untuk membuat tampilan sidebar kita sepenuhnya fokus pada navigasi, kita akan menghapus banner promosi bawaan dari template.
Selamat! Anda telah berhasil membangun halaman dinamis pertama Anda dengan menerapkan semua konsep yang telah kita pelajari.
Artikel Lainnya Dengan Kategori Terkait :
1. Inventaris Lab Laravel 12 : Bagian #01 - INSTALASI LARAGON, PHP, PHPMYADMIN & LARAVEL
2. Inventaris Lab Laravel 12 : Bagian #02 - KONFIGURASI DATABASE & FONDASI PROYEK
3. Inventaris Lab Laravel 12 : Bagian #03 - MEMBANGUN HALAMAN ADMIN DENGAN BLADE TEMPLATING
4. Inventaris Lab Laravel 12 : Bagian #04 - MEMBUAT HALAMAN DASHBOARD DINAMIS
5. Inventaris Lab Laravel 12 : Bagian #05 - MEMBUAT HALAMAN CRUD USERS
6. Inventaris Lab Laravel 12 : Bagian #06 - MEMBUAT FITUR AUTENTIKASI (LOGIN) & PENYESUAIAN UI
7. Inventaris Lab Laravel 12 : Bagian #07 - MEMBUAT HALAMAN CRUD CATEGORY
8. Inventaris Lab Laravel 12 : Bagian #08 - MEMBUAT HALAMAN CRUD ITEM
9. Inventaris Lab Laravel 12 : Bagian #09 - MEMBUAT HALAMAN TRANSAKSI PEMINJAMAN (LOAN)
10. Inventaris Lab Laravel 12 : Bagian #10 - HAK AKSES (AUTHORIZATION) & HALAMAN SISWA
Mahardika Oktadiansyah - 15 Juli 2025
Belajar CSS Lanjutan #395 | CSS padding-inline Property
Mahardika Oktadiansyah - 15 Juli 2025
Belajar CSS Lanjutan #394 | CSS padding-bottom Property
Mahardika Oktadiansyah - 15 Juli 2025
Belajar CSS Lanjutan #393 | CSS padding-block-start Property