Tutorial Lengkap CRUD Laravel 9 Menggunakan Bootstrap 5 #3 Membuat Controller - Halo teman-teman, di tutorial kali ini kita akan belajar membuat controller di Laravel 9. Pada artikel sebelumnya kita sudah membahas tentang installasi dan membuat database. Sekarang kita akan lanjutkan pada pembahasan controller. Nah, daripada penasaran, yuk langsung kita mulai aja!
Laravel menyediakan cara yang mudah untuk membuat controller menggunakan Artisan, tool command line
bawaan Laravel. Yuk, kita buat controller pertama kita!
Untuk membuat controller sederhana, gunakan perintah:
php artisan make:controller NamaController
Contohnya, kalau kamu ingin membuat BlogController
, ketik:
php artisan make:controller BlogController
Perintah ini akan membuat file bernama BlogController.php
di dalam folder app/Http/Controllers
.
Kalau kamu ingin membuat controller yang otomatis punya metode CRUD (Create, Read, Update, Delete), gunakan opsi --resource
:
php artisan make:controller NamaController --resource
Contoh:
php artisan make:controller BlogController --resource
Perintah ini akan otomatis membuat beberapa method di dalam controller seperti index
, create
, store
, show
, edit
, update
, dan destroy
. Ini sangat berguna kalau kamu ingin cepat membuat fungsi CRUD.
Setelah controller berhasil dibuat, kamu bisa melihat file BlogController.php
di dalam folder app/Http/Controllers
. Kalau kamu membuat controller dengan --resource
, maka di dalamnya sudah ada beberapa metode bawaan, yaitu:
index()
: Untuk menampilkan daftar data.create()
: Untuk menampilkan form pembuatan data baru.store()
: Untuk menyimpan data baru ke database.show()
: Untuk menampilkan data berdasarkan ID tertentu.edit()
: Untuk menampilkan form edit data.update()
: Untuk memperbarui data yang ada.destroy()
: Untuk menghapus data dari database.Kamu bisa menambahkan logika di dalam metode-metode tersebut sesuai kebutuhan aplikasi.
Setelah membuat controller, langkah berikutnya adalah menghubungkannya dengan route. File route untuk request
berbasis web ada di routes/web.php
.
Contoh cara menghubungkan URL dengan controller:
use App\Http\Controllers\BlogController;
Route::get('/blog', [BlogController::class, 'index']);
Route::get('/blog/{id}', [BlogController::class, 'show']);
Kode di atas akan menghubungkan URL /blog
ke method index
di BlogController
, dan URL /blog/{id}
ke metode show
.
Kalau kamu membuat controller dengan opsi --resource
, kamu bisa menambahkan route resource seperti ini:
Route::resource('blog', BlogController::class);
Dengan cara ini, semua metode CRUD (Create, Read, Update, Delete) akan otomatis terhubung dengan URL yang sesuai.
Silahkan buka file BlogController.php
yang terdapat di direktori App\Http\Controllers\BlogController.php
, kemudian isi dengan kode di bawah ini:
use Str;
public function index()
{
$blog = \App\Models\Blog::get();
return view('blog.index', compact('blog'));
}
public function create()
{
$categories = \App\Models\Category::pluck('name', 'id');
return view('blog.create', compact('categories'));
}
public function store(Request $request)
{
$blog = new \App\Models\Blog;
$blog->title = $request->title;
$blog->slug = Str::slug($request->title);
$blog->content = $request->content;
$blog->status = $request->status;
$blog->category_id = $request->category_id;
$blog->save();
return redirect()->route('blog.index')->with('success','Berhasil menyimpan data');
}
public function show($id)
{
$blog = \App\Models\Blog::findorFail($id);
return view('blog.show', compact('blog'));
}
public function edit($id)
{
$blog = \App\Models\Blog::findorFail($id);
$categories = \App\Models\Category::pluck('name', 'id');
return view('blog.edit', compact('blog','categories'));
}
public function update(Request $request, $id)
{
$blog = \App\Models\Blog::findorFail($id);
$blog->title = $request->title;
$blog->slug = Str::slug($request->title);
$blog->content = $request->content;
$blog->status = $request->status;
$blog->category_id = $request->category_id;
$blog->save();
return redirect()->route('blog.index')->with('success','Berhasil update data');
}
public function destroy($id)
{
$blog = \App\Models\Blog::findorFail($id);
$blog->delete();
return redirect()->route('blog.index')->with('success','Berhasil hapus data');
}
Supaya kode tetap rapi dan mudah dikelola, berikut beberapa tips saat membuat controller di Laravel:
UserController
untuk mengelola data pengguna.Membuat controller di Laravel 9 ternyata nggak ribet, kan? Dengan menggunakan Artisan CLI, kamu bisa membuat controller dengan cepat dan mudah. Controller sangat membantu dalam memisahkan logika aplikasi dari tampilan, membuat kode jadi lebih terstruktur dan gampang dikelola.
Nah, pada artikel selanjutnya akan membahas bagaimana menampilkan data, menambahkan halaman view
pada halaman index, create dan edit data.
Yuk lanjut! 🚀