mari kita implementasikan CRUD untuk Kategori
// app\Http\Controllers\Inventory\CategoryController.php
<?php
namespace App\Http\Controllers\Inventory;
use App\Http\Controllers\Controller;
use App\Models\Category;
use Illuminate\Http\Request;
class CategoryController extends Controller
{
public function index()
{
$categories = Category::latest()->paginate(10);
return view('inventory.categories.index', compact('categories'));
}
public function create()
{
return view('inventory.categories.create');
}
public function store(Request $request)
{
$request->validate([
'name' => 'required|string|max:255',
'description' => 'nullable|string'
]);
Category::create($request->all());
return redirect()->route('categories.index')
->with('success', 'Kategori berhasil ditambahkan');
}
public function edit(Category $category)
{
return view('inventory.categories.edit', compact('category'));
}
public function update(Request $request, Category $category)
{
$request->validate([
'name' => 'required|string|max:255',
'description' => 'nullable|string'
]);
$category->update($request->all());
return redirect()->route('categories.index')
->with('success', 'Kategori berhasil diperbarui');
}
public function destroy(Category $category)
{
$category->delete();
return redirect()->route('categories.index')
->with('success', 'Kategori berhasil dihapus');
}
}
// routes\web.php
<?php
use App\Http\Controllers\Dashboard\DashboardController;
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
return redirect()->route('dashboard');
});
Route::middleware(['auth'])->group(function () {
Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');
// Tambahkan route untuk kategori
Route::resource('categories', \App\Http\Controllers\Inventory\CategoryController::class);
});
// resources\views\inventory\categories\index.blade.php
<x-app-layout>
<x-slot name="header">
<div class="flex justify-between">
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
{{ __('Kategori') }}
</h2>
<a href="{{ route('categories.create') }}" class="bg-blue-500 hover:bg-blue-700 text-black font-bold py-2 px-4 rounded">
Tambah Kategori
</a>
</div>
</x-slot>
<div class="py-12">
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
<div class="bg-white overflow-hidden shadow-xl sm:rounded-lg p-6">
@if(session('success'))
<div class="bg-green-100 border border-green-400 text-green-700 px-4 py-3 rounded relative mb-4">
{{ session('success') }}
</div>
@endif
<table class="min-w-full divide-y divide-gray-200">
<thead>
<tr>
<th class="px-6 py-3 bg-gray-50 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
Nama
</th>
<th class="px-6 py-3 bg-gray-50 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
Deskripsi
</th>
<th class="px-6 py-3 bg-gray-50 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
Aksi
</th>
</tr>
</thead>
<tbody class="bg-white divide-y divide-gray-200">
@foreach($categories as $category)
<tr>
<td class="px-6 py-4 whitespace-nowrap">{{ $category->name }}</td>
<td class="px-6 py-4">{{ $category->description }}</td>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium">
<a href="{{ route('categories.edit', $category) }}" class="text-indigo-600 hover:text-indigo-900 mr-3">Edit</a>
<form action="{{ route('categories.destroy', $category) }}" method="POST" class="inline">
@csrf
@method('DELETE')
<button type="submit" class="text-red-600 hover:text-red-900" onclick="return confirm('Apakah Anda yakin?')">
Hapus
</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="mt-4">
{{ $categories->links() }}
</div>
</div>
</div>
</div>
</x-app-layout>
// resources\views\inventory\categories\create.blade.php
<x-app-layout>
<x-slot name="header">
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
{{ __('Tambah Kategori') }}
</h2>
</x-slot>
<div class="py-12">
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
<div class="bg-white overflow-hidden shadow-xl sm:rounded-lg p-6">
<form action="{{ route('categories.store') }}" method="POST">
@csrf
<div class="mb-4">
<label for="name" class="block text-gray-700 text-sm font-bold mb-2">Nama Kategori</label>
<input type="text" name="name" id="name" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline" required>
</div>
<div class="mb-4">
<label for="description" class="block text-gray-700 text-sm font-bold mb-2">Deskripsi</label>
<textarea name="description" id="description" rows="3" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline"></textarea>
</div>
<div class="flex items-center justify-between">
<button type="submit" class="bg-blue-500 hover:bg-blue-700 text-black font-bold py-2 px-4 rounded focus:outline-none focus:shadow-outline">
Simpan
</button>
<a href="{{ route('categories.index') }}" class="text-gray-600 hover:text-gray-800">Batal</a>
</div>
</form>
</div>
</div>
</div>
</x-app-layout>
// resources\views\inventory\categories\edit.blade.php
<x-app-layout>
<x-slot name="header">
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
{{ __('Edit Kategori') }}
</h2>
</x-slot>
<div class="py-12">
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
<div class="bg-white overflow-hidden shadow-xl sm:rounded-lg p-6">
<form action="{{ route('categories.update', $category) }}" method="POST">
@csrf
@method('PUT')
<div class="mb-4">
<label for="name" class="block text-gray-700 text-sm font-bold mb-2">Nama Kategori</label>
<input type="text" name="name" id="name" value="{{ $category->name }}" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline" required>
</div>
<div class="mb-4">
<label for="description" class="block text-gray-700 text-sm font-bold mb-2">Deskripsi</label>
<textarea name="description" id="description" rows="3" class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline">{{ $category->description }}</textarea>
</div>
<div class="flex items-center justify-between">
<button type="submit" class="bg-blue-500 hover:bg-blue-700 text-black font-bold py-2 px-4 rounded focus:outline-none focus:shadow-outline">
Update
</button>
<a href="{{ route('categories.index') }}" class="text-gray-600 hover:text-gray-800">Batal</a>
</div>
</form>
</div>
</div>
</div>
</x-app-layout>