laravel membuat form blade | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: laravel membuat form blade

Saturday, April 11, 2026

laravel membuat form blade

📚 Seri Belajar Laravel Lengkap Artikel 17 dari 50

Membuat Form HTML di Blade dan
Mengirim Data ke Controller

Dari form kosong sampai data masuk ke database — panduan lengkap yang bakal bikin kamu paham alur Laravel dari ujung ke ujung.

#Laravel #PHP #Blade #MVC #Tutorial
⏱ 10 mnt
Estimasi Baca
🎯 Beginner
Level
🗓 2025
Up to Date

Pernah nggak kamu bikin form HTML yang kelihatannya sudah benar — tombol submit sudah ada, input sudah lengkap — tapi begitu diklik, data nyasar entah ke mana? Itu bukan salah kamu, itu salah konsepnya. Di artikel ke-17 dari seri 50 Artikel Belajar Laravel ini, kita akan bedah tuntas cara membuat form di Blade template dan mengirim data ke Controller dengan benar. Topik ini erat kaitannya dengan migration Laravel karena setelah data berhasil dikirim, tujuan akhirnya ya ke tabel database yang sudah kamu buat lewat migration. Siap? Mari kita mulai dari nol!

📌 Konsep Utama
Form Blade → Route → Controller → Model → Database

Ini adalah alur dasar pengiriman data di Laravel. Setiap langkah memiliki peran yang jelas, dan semuanya saling terhubung seperti rantai produksi di pabrik modern.

🧩 Apa Itu Blade Template dan Kenapa Kamu Harus Pakai Ini?

Bayangkan kamu adalah seorang chef. Kamu punya resep rahasia (logika PHP), bahan-bahan segar (data dari controller), dan piring sajian yang cantik (tampilan HTML). Blade adalah piring sajian kamu — dia mengatur bagaimana data disajikan ke pengguna tanpa mengotori logika bisnis.

Blade adalah template engine bawaan Laravel yang memungkinkan kamu menulis PHP di dalam HTML dengan sintaks yang bersih dan elegan. File Blade disimpan di folder resources/views/ dengan ekstensi .blade.php.

💡
Tips: Penamaan File Blade

Gunakan konvensi nama yang deskriptif. Misalnya untuk form pembuatan artikel, beri nama articles/create.blade.php. Ini memudahkan tim dan kamu sendiri saat proyek membesar.

Di dalam Blade, kamu bisa menggunakan direktif seperti @if, @foreach, @extends, dan banyak lagi. Tapi yang paling sering kamu pakai untuk form? @csrf — dan ini wajib, bukan opsional!

📝 Membuat Form HTML di Blade: Step by Step

Oke, langsung praktik. Kita akan membuat form sederhana untuk menambah data artikel. Ikuti langkah-langkah berikut:

1

Buat Route untuk Menampilkan Form dan Menerima Data

Buka file routes/web.php dan tambahkan dua route:

📄 routes/web.php
use App\Http\Controllers\ArtikelController;

Route::get('/artikel/create', [ArtikelController::class, 'create'])
     ->name('artikel.create');

Route::post('/artikel', [ArtikelController::class, 'store'])
     ->name('artikel.store');
2

Buat Controller (Jika Belum Ada)

Jalankan perintah Artisan di terminal:

$ php artisan make:controller ArtikelController
3

Tambahkan Method create() di Controller

Buka app/Http/Controllers/ArtikelController.php:

📄 ArtikelController.php
public function create()
{
    return view('artikel.create');
}
4

Buat File Blade untuk Form

Buat file resources/views/artikel/create.blade.php:

📄 resources/views/artikel/create.blade.php
<!DOCTYPE html>
<html lang="id">
<head>
    <meta charset="UTF-8">
    <title>Tambah Artikel</title>
</head>
<body>
    <h1>Tambah Artikel Baru</h1>

    <form action="{{ route('artikel.store') }}"
          method="POST">
        @csrf

        <label>Judul:</label>
        <input type="text"
               name="judul"
               placeholder="Tulis judul artikel">

        <label>Konten:</label>
        <textarea name="konten"></textarea>

        <button type="submit">Simpan</button>
    </form>
</body>
</html>
⚠️
Wajib: @csrf di Setiap Form POST

Direktif @csrf menghasilkan hidden token yang melindungi form dari serangan Cross-Site Request Forgery. Tanpa ini, Laravel akan menolak request-mu dengan error 419 Page Expired. Jangan pernah skip!

🎯 Menerima dan Memproses Data di Controller

Setelah form dikirim, Laravel akan merutekan request ke method store() di controller. Di sinilah kamu menangkap data dan — kalau sudah ada tabel dari migration Laravel — menyimpannya ke database.

5

Tambahkan Method store() di Controller

📄 ArtikelController.php — Method store()
use App\Models\Artikel;
use Illuminate\Http\Request;

public function store(Request $request)
{
    // Ambil semua data dari form
    $judul  = $request->input('judul');
    $konten = $request->input('konten');

    // Simpan ke database via Eloquent Model
    Artikel::create([
        'judul'  => $judul,
        'konten' => $konten,
    ]);

    // Redirect setelah berhasil
    return redirect()->route('artikel.create')
                  ->with('sukses', 'Artikel berhasil disimpan!');
}
Insight: $request->all() vs $request->input()

$request->all() mengambil SEMUA data sekaligus dalam bentuk array, termasuk CSRF token. Sedangkan $request->input('nama') lebih selektif dan aman. Untuk keamanan ekstra, gunakan $request->only(['judul','konten']) agar hanya field yang kamu izinkan yang masuk.

6

Pastikan Model Memiliki $fillable

Agar Artikel::create() bisa bekerja, model harus mendaftarkan kolom yang boleh diisi massal (mass assignment). Ini berhubungan langsung dengan tabel yang dibuat oleh migration Laravel.

📄 app/Models/Artikel.php
class Artikel extends Model
{
    protected $fillable = [
        'judul',
        'konten',
    ];
}

🗄️ Hubungan Form dengan Migration Laravel dan Database

Nah, di sinilah semua puzzle menyatu. Ketika kamu mengirim form, data butuh "rumah" untuk ditinggali — dan rumah itu adalah tabel di database yang dibuat lewat migration Laravel. Kalau kamu belum membuat tabel, simpanan data akan gagal dan kamu dapat error seperti SQLSTATE: Base table or view not found.

🔍 Analisis: Alur Lengkap Data Form → Database
STEP 1
Jalankan php artisan make:migration create_artikels_table → file migration terbuat
STEP 2
Definisikan kolom (judul, konten) di method up()
STEP 3
Jalankan php artisan migrate → tabel terbuat di database
STEP 4
Form dikirim → Controller menerima → Artikel::create() menyimpan ke tabel ✅

Contoh migration untuk tabel artikels yang mendukung form kita:

📄 database/migrations/xxxx_create_artikels_table.php
public function up(): void
{
    Schema::create('artikels', function (Blueprint $table) {
        $table->id();
        $table->string('judul');
        $table->text('konten');
        $table->timestamps();
    });
}
🔥
Fakta Menarik: Nama Tabel Otomatis di Laravel

Laravel secara otomatis mengonversi nama model ke nama tabel dalam format snake_case plural. Model Artikel → tabel artikels. Model BlogPost → tabel blog_posts. Kamu bisa override ini dengan properti $table di model.

📊 Referensi Cepat: Method Request yang Sering Dipakai

Method Kegunaan Contoh
$request->input() Ambil nilai satu field $request->input('judul')
$request->all() Ambil semua data form (array) $data = $request->all()
$request->only() Ambil field tertentu saja $request->only(['judul'])
$request->except() Ambil semua kecuali field ini $request->except(['_token'])
$request->has() Cek apakah field ada di request $request->has('judul')
💡
Tips: Tampilkan Flash Message Setelah Submit

Gunakan ->with('sukses', 'Pesan') saat redirect, lalu tampilkan di Blade dengan @if(session('sukses')) ... @endif. Ini memberikan feedback langsung ke pengguna tanpa reload penuh.

✅ Kesimpulan

Kamu Sudah Menguasai Alur Form → Controller di Laravel!

Hari ini kamu telah mempelajari cara membuat form HTML di Blade dengan direktif @csrf yang wajib ada, cara mendefinisikan Route GET dan POST yang benar, cara menerima data di Controller menggunakan objek $request, dan bagaimana semua ini terhubung dengan migration Laravel sebagai fondasi tabel database-mu.

Ini adalah bagian dari seri 50 Artikel Belajar Laravel. Di artikel berikutnya, kita akan belajar cara memvalidasi data form agar tidak ada data kotor yang masuk ke database — topik yang sering dianggap remeh tapi krusial di dunia nyata.

Ada bagian yang masih bingung? Drop pertanyaanmu di kolom komentar — komunitas kita aktif dan siap bantu! 🚀

#Laravel #PHP #BladeTemplate #MVC #MigrationLaravel #WebDevelopment #Tutorial

No comments:

Post a Comment

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux