DEV Community

Cover image for CRUD Laravel 10 dan Bootstrap 5 #3: Menambahkan Data
Shofi Setiawan for Riseku

Posted on • Originally published at blog.riseku.com

CRUD Laravel 10 dan Bootstrap 5 #3: Menambahkan Data

Hai, Sobat Risereaders!

Pada artikel sebelumnya, kita telah membahas langkah-langkah untuk menampilkan data dalam aplikasi CRUD kita. Juga, sudah mempelajari cara mendefinisikan route, pembuatan controller dan method, serta pembuatan tampilan untuk menampilkan data.CRUD Laravel 10 dan Bootstrap 5: Menampilkan Data

Sekarang, kita akan melanjutkan pembuatan aplikasi CRUD kita dengan aksi menambahkan data baru ke dalam database.

Cara Menambahkan Data Aplikasi CRUD

Tutorial menambahkan data buku ke dalam database untuk aplikasi CRUD, beserta gambarnya:

1. Membuat Method Create dan Store

Langkah pertama yang perlu dilakukan adalah membuat method create dan store di dalam controller BookController.

Method create akan menampilkan form untuk menambahkan data, sedangkan method store akan bertanggung jawab untuk menyimpan data baru ke dalam database.

// app/Http/Controllers/BookController.php

public function create()
{
    // menampilkan halaman form tambah buku
    return view('books.create');
}

public function store(Request $request)
{
    // Validasi data input
    $validatedData = $request->validate([
        'cover' => 'required|image|mimes:jpg,png,jpeg,gif|max:2048',
        'title' => 'required|string|max:255',
        'description' => 'required|string',
    ]);

    // Upload file gambar cover
    $cover = $request->file('cover');
    $cover->storeAs('public/books', $cover->hashName());

    // Menambahkan data ke database, termasuk gambar cover
    $validatedData['cover'] = $cover->hashName();
    Book::create($validatedData);

    // Mengalihkan halaman ke index dengan pesan sukses
    return redirect()->route('books.index')->with('success', 'Data buku berhasil ditambahkan!');
}
Enter fullscreen mode Exit fullscreen mode

Pada method store, kita melakukan validasi terhadap data yang dikirimkan dari formulir untuk memastikan bahwa data yang masuk sesuai dengan yang diharapkan. Dokumentasi lengkap mengenai validasi bisa kamu baca di sini.

2. Membuat View Tambah Data

Selanjutnya, mari kita buat tampilan untuk halaman tambah data. Buatlah file create.blade.php di dalam folder resources/views/books/ dengan kode berikut:

<!-- resources/views/books/create.blade.php -->

<!-- Meng-extend layout dari 'layouts.app' -->
@extends('layouts.app')

<!-- Judul halaman -->
@section('title', 'Tambah Buku')

@section('content')
    <div class="row justify-content-center">
        <div class="col-md-8">
            <!-- Menampilkan judul halaman yang telah diset -->
            <h2>@yield('title')</h2>

            <div class="card mt-3">
                <div class="card-body">
                    <form action="{{ route('books.store') }}" method="POST" enctype="multipart/form-data">
                        @csrf

                        <div class="mb-3">
                            <label class="form-label" for="cover">Cover</label>
                            <input type="file" class="form-control @error('cover') is-invalid @enderror" id="cover"
                                name="cover">
                            @error('cover')
                                <div class="invalid-feedback">{{ $message }}</div>
                            @enderror
                        </div>

                        <div class="mb-3">
                            <label class="form-label" for="title">Judul</label>
                            <input type="text" class="form-control @error('title') is-invalid @enderror" id="title"
                                name="title" value="{{ old('title') }}">
                            @error('title')
                                <div class="invalid-feedback">{{ $message }}</div>
                            @enderror
                        </div>

                        <div class="mb-3">
                            <label class="form-label" for="description">Deskripsi</label>
                            <textarea class="form-control @error('description') is-invalid @enderror" id="description" name="description"
                                rows="3">{{ old('description') }}</textarea>
                            @error('description')
                                <div class="invalid-feedback">{{ $message }}</div>
                            @enderror
                        </div>

                        <a href="{{ route('books.index') }}" class="btn btn-outline-primary me-2">Kembali</a>
                        <button type="submit" class="btn btn-primary">Simpan</button>
                    </form>
                </div>
            </div>
        </div>
    </div>
@endsection
Enter fullscreen mode Exit fullscreen mode

Pada form ini, kita menggunakan metode POST untuk mengirimkan data ke dalam controller untuk diproses.

Kita juga menggunakan directive @csrf untuk melindungi formulir dari serangan CSRF (Cross-Site Request Forgery), yang merupakan tindakan keamanan yang penting untuk diterapkan dalam aplikasi web.

Selain itu, kita juga menambahkan pesan error jika data yang kita input tidak valid dengan validasi di controller.

3. Membuat Storage Link

Langkah selanjutnya adalah memastikan file gambar dapat diakses secara publik. Untuk melakukannya, kita perlu membuat symbolic link dari direktori storage ke direktori public.

Jalankan perintah berikut di dalam terminal Anda:

php artisan storage:link
Enter fullscreen mode Exit fullscreen mode

Dengan langkah ini, file gambar yang diunggah ke dalam storage/app/public akan dapat diakses melalui URL dengan menggunakan path storage/.

Jika berhasil, setelah kamu membuka folder public, maka akan muncul folder storage.

Berhasil membuat storage link

4. Menjalankan Aplikasi

Setelah selesai menambahkan method dan membuat halaman books.create, saatnya menjalankan aplikasi Laravel dengan perintah:

php artisan serve
Enter fullscreen mode Exit fullscreen mode

Kunjungi http://localhost:8000/books/create di browser untuk melihat tampilan form tambah data.

  • Tampilan halaman books.create.

Tampilan halaman books.create

  • Tampilan halaman books.create dengan pesan error.

Tampilan halaman books.create dengan pesan error

Penutup

Dengan demikian, kita sudah berhasil membuat aksi tambah data ke dalam aplikasi CRUD Laravel dan Bootstrap. Mulai dari membuat method untuk menangani tambah data dan membuat tampilan untuk halaman tambah data.

Di artikel berikutnya, kita akan mempelajari cara mengupdate data buku yang ada di database. Semoga tutorial ini memberikan manfaat!

Top comments (0)