• Skip to main content
  • Skip to secondary menu
  • Skip to primary sidebar
  • Beranda
  • Kontak
  • Layanan
Awiez Fathwa Zein Logo

Awiez

Pengejar Mimpi

  • Kategori
    • Cerita
    • Desain
    • Jaringan
    • Pemrograman
  • Github
  • Pencapaian
  • Tentang Penulis
You are here: Home / Pemrograman / Tutorial Laravel 11 Membuat Aplikasi Todo List Sederhana : Bagian 2 – Membuat UI Dengan Bootstrap dan Fungsi Aplikasi

Tutorial Laravel 11 Membuat Aplikasi Todo List Sederhana : Bagian 2 – Membuat UI Dengan Bootstrap dan Fungsi Aplikasi

25 August 2024 09:48 by Awiez Fathwa Zein Leave a Comment

Tutorial Laravel 11

Halo semua! kita lanjut ke bagian ke 2 dari Tutorial Laravel 11, jika belum membaca tutorial bagian pertama bisa dibaca disini Tutorial Laravel 11 Membuat Aplikasi Todo List Sederhana : Bagian 1 – Install Laravel. Bagian ini berisi pembuatan User Interface (UI) dari aplikasi Todo List yang akan kita buat.

Baik langsung saja kita mulai tutorialnya. Setelah sebelumnya kita sudah menginstall dan melakukan konfigurasi file .env Laravel dan memastikan bahwa tanggal dan jam sudah sesuai dengan zona waktu WIB, selanjutnya adalah membuat tampilan dari Todo List yang akan kita buat.

Daftar Isi

  • Buat file blade
  • Tambahkan route ke view
  • Buat Tampilan Aplikasi
  • Buat Fitur Aplikasi

Buat file blade

Pertama buat terlebih dahulu file blade pada resources/views/todo-list.blade.php beri nama sesuai dengan keinginan, disini saya beri nama file tersebut dengan nama todo-list.blade.php

Kemudian kita buka dengan tag html dan import css serta js bootstrap, bisa gunakan CDN maupun download resource ke folder laravel yang kita miliki. Pada tutorial ini saya akan menggunakan CDN, dilain kesempatan saya akan buatkan tutorial menggunakan resource dari bootstrap dan melakukan compile menggunakan webpack maupun vite.

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Todo List App</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
  </head>
  <body>
    <h1>Hello, world!</h1>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
  </body>
</html>

Tambahkan route ke view

Setelah membuat view, selanjutnya adalah buat routenya agar view yang tadi kita buat dapat diakses dengan cara buka file web.php didalam folder routes kemudian ubah kode yang sebelumnya kita buat untuk test konfigurasi tanggal menjadi seperti berikut:

Route::get('/', function () {
    return view("todo-list");
});

Setelah route dibuat selanjutnya uji coba route tersebut dengan cara jalankan server seperti pada tutorial sebelumnya dengan menggunakan php artisan serve kemudian buka pada browser web, jika berhasil maka akan muncul “Hello World” seperti dibawah ini.

Buat Tampilan Aplikasi

Selanjutnya buat tampilan aplikasi todo list yaitu dengan menggunakan form input untuk memasukkan data “todo” dan gunakan bootstrap list untuk menampilkan todo yang telah diinput. Ganti <h1>Hello, World!</h1> dengan kode dibawah ini:

<!doctype html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Todo List App</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
</head>

<body>
    <div class="container">
        <h1 class="text-center mt-5">Todo List App</h1>
        <form action="#">
            <div class="input-group mb-3 mt-3">
                <input type="text" class="form-control" placeholder="Add new todo" aria-label="Add new todo"
                    aria-describedby="button-addon2">
                <button class="btn btn-primary" type="submit" id="button-addon2">Add</button>
            </div>
        </form>

        <ul class="list-group">
            <li class="list-group-item d-flex justify-content-between align-items-center">
                Todo 1
                <div>
                    <button class="btn btn-danger btn-sm">Delete</button>
                    <button class="btn btn-primary btn-sm">Done</button>
                </div>
            </li>
            <li class="list-group-item d-flex justify-content-between align-items-center">
                Todo 2
                <div>
                    <button class="btn btn-danger btn-sm">Delete</button>
                    <button class="btn btn-primary btn-sm">Done</button>
                </div>
            </li>
            <li class="list-group-item d-flex justify-content-between align-items-center">
                Todo 3
                <div>
                    <button class="btn btn-danger btn-sm">Delete</button>
                    <button class="btn btn-primary btn-sm">Done</button>
                </div>
            </li>
        </ul>
        <h4 class="mt-5">Done</h4>
        <ul class="list-group">
            <li class="list-group-item d-flex justify-content-between align-items-center">
                Todo 4
                <div>
                    <button class="btn btn-danger btn-sm">Delete</button>
                    <button class="btn btn-primary btn-sm">Undone</button>
                </div>
            </li>
            <li class="list-group-item d-flex justify-content-between align-items-center">
                Todo 5
                <div>
                    <button class="btn btn-danger btn-sm">Delete</button>
                    <button class="btn btn-primary btn-sm">Undone</button>
                </div>
            </li>
            <li class="list-group-item d-flex justify-content-between align-items-center">
                Todo 6
                <div>
                    <button class="btn btn-danger btn-sm">Delete</button>
                    <button class="btn btn-primary btn-sm">Undone</button>
                </div>
            </li>
        </ul>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"
        integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous">
    </script>
</body>

</html>

Setelah kode tersebut ditambahkan silahkan refresh halaman untuk melihat hasilnya hingga menjadi seperti gambar dibawah ini:

Tutorial Laravel 11

Buat Fitur Aplikasi

Setelah tampilan berhasil dibuat, selanjutnya kita akan mulai membuat fitur untuk menyimpan, mengubah, dan menghapus todo list. Pertama kita harus membuat table untuk menyimpan data todo menggunakan migration yaitu dengan perintah php artisan make:migration create_todos_table. Setelah itu tambahkan field yang dibutuhkan pada file migration yang telah dibuat, kemudian jalankan migration dengan php artisan migrate.

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    /**
     * Run the migrations.
     */
    public function up(): void
    {
        Schema::create('todos', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->boolean('completed')->default(false);
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::dropIfExists('todos');
    }
};

Baca juga:

  • Gampang Banget! Cara Upload Form Dengan jQuery Ajax Pada Laravel 10
  • Cara Mendownload Seluruh Isi Google Drive Dengan Google Takeout 2023
  • Cara Membuat Website Shortenlink Sendiri Menggunakan Laravel 9
  • Cara Mengatasi Spam Telepon 188 Telkomsel
  • Mengenal Perbedaan HTTP dan HTTPS

Selanjutnya buat model Todos dengan perintah php artisan make:model Todos, dan tambahkan $protected nya dengan field “title” dan “completed”

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Todos extends Model
{
    use HasFactory;

    protected $fillable = ['title', 'completed'];
}

Setelah model dibuat selanjutnya buat controller dengan perintah php artisan make:controller TodosController kemudian tambahkan function untuk menambahkan, mengedit (done / not done), dan menghapus todo list.

<?php

namespace App\Http\Controllers;

use App\Models\Todos;
use Illuminate\Http\Request;

class TodosController extends Controller
{
    public function index()
    {
        $todos_completed = Todos::where('completed', true)->get();
        $todos_not_completed = Todos::where('completed', false)->get();
        return view('todo-list', compact('todos_completed', 'todos_not_completed'));
    }

    public function store(Request $request)
    {
        Todos::create($request->all());
        return redirect()->back()->with('message', 'Todo created successfully');
    }

    public function update(Request $request, $id)
    {
        $todo = Todos::find($id);
        if ($todo->completed) {
            $todo->completed = false;
        } else {
            $todo->completed = true;
        }
        $todo->save();

        return redirect()->back()->with('message', 'Todo updated successfully');
    }

    public function destroy($id)
    {
        Todos::destroy($id);
        return redirect()->back()->with('message', 'Todo deleted successfully');
    }

}

Jangan lupa untuk memperbarui route yang kita miliki, arahkan masing-masing route ke function yang telah dibuat pada controller

<?php

use App\Http\Controllers\TodosController;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Route;

Route::get('/', [TodosController::class, 'index']);
Route::post('/store', [TodosController::class, 'store'])->name('todos.store');
Route::get('/update/{id}', [TodosController::class, 'update'])->name('todos.update');
Route::get('/delete/{id}', [TodosController::class, 'destroy'])->name('todos.destroy');

Jangan lupa untuk memperbarui todo-list.blade.php yang telah dibuat sehingga aplikasi kita dapat berfungsi sebagaimana mestinya

<!doctype html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Todo List App</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
</head>

<body>
    <div class="container">
        <h1 class="text-center mt-5">Todo List App</h1>
        <form action="{{route('todos.store')}}" method="POST">
            @csrf
            <div class="input-group mb-3 mt-3">
                <input type="text" name="title" class="form-control" placeholder="Add new todo" aria-label="Add new todo"
                    aria-describedby="button-addon2">
                <button class="btn btn-primary" type="submit" id="button-addon2">Add</button>
            </div>
        </form>

        <ul class="list-group">
            @foreach ($todos_not_completed as $item)
                <li class="list-group-item d-flex justify-content-between align-items-center">
                    {{ $item->title }}
                    <div>
                        <a href="{{ route('todos.destroy', ['id' => $item->id]) }}"
                            class="btn btn-danger btn-sm">Delete</a>
                        <a href="{{ route('todos.update', ['id' => $item->id]) }}"
                            class="btn btn-primary btn-sm">Done</a>
                    </div>
                </li>
            @endforeach
        </ul>
        <h4 class="mt-5">Done</h4>
        <ul class="list-group">
            @foreach ($todos_completed as $item)
            <li class="list-group-item d-flex justify-content-between align-items-center">
                {{ $item->title }}
                <div>
                    <a href="{{ route('todos.destroy', ['id' => $item->id]) }}"
                        class="btn btn-danger btn-sm">Delete</a>
                    <a href="{{ route('todos.update', ['id' => $item->id]) }}"
                        class="btn btn-primary btn-sm">Not Done</a>
                </div>
            </li>
            @endforeach
        </ul>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"
        integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous">
    </script>
</body>

</html>

Selesai, aplikasi sudah siap digunakan. Hasil akhirnya dapat dilihat dibawah ini, jika ada pertanyaan, kritik & saran, maupun request tutorial bisa komentar dibawah yaa. Jika membutuhkan dokumentasi lebih lanjut dari Laravel/Bootstrap kalian dapat akses disini laravel.com/getbootstrap.com Terima kasih!

Yuk Bagikan Informasi Ini :

Filed Under: Pemrograman, Laravel Tagged With: Laravel, Laravel 11, Tutorial

About Awiez Fathwa Zein

Halo, perkenalkan nama saya Awiez Fathwa Zein. Saya merupakan seorang mahasiswa Teknik Informatika pada salah satu perguruan tinggi negeri yang fokus pada pemrograman web dan sedikit IoT.

Reader Interactions

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Primary Sidebar

PENCARIAN

Video Popular

https://www.youtube.com/watch?v=UadEy4r_a8g

POSTINGAN TERBARU

  • Tutorial Laravel 11 Membuat Aplikasi Todo List Sederhana : Bagian 2 – Membuat UI Dengan Bootstrap dan Fungsi Aplikasi
  • Tutorial Laravel 11 Membuat Aplikasi Todo List Sederhana : Bagian 1 – Install Laravel
  • Gampang Banget! Cara Upload Form Dengan jQuery Ajax Pada Laravel 10
  • Cara Mendownload Seluruh Isi Google Drive Dengan Google Takeout 2023
  • Cara Membuat Website Shortenlink Sendiri Menggunakan Laravel 9

KOMENTAR TERBARU

  • Cara Mendapatkan Canva Pro Gratis Melalui Github Education Dengan Email Mahasiswa 2021 - Awiez on Cara Membuat Linktree Sendiri Dengan HTML dan CSS 2021
  • Putra surya setiawansyah on Cara Mendapatkan Canva Pro Gratis Melalui Github Education Dengan Email Mahasiswa 2021
  • Putra surya setiawansyah on Cara Mendapatkan Canva Pro Gratis Melalui Github Education Dengan Email Mahasiswa 2021
  • rls on Cara Mendapatkan Canva Pro Gratis Melalui Github Education Dengan Email Mahasiswa 2021

ARSIP

KATEGORI

  • Cerita (1)
  • Desain (5)
  • Jaringan (1)
  • Pemrograman (7)
    • Laravel (4)
    • Tutorial HTML Dasar (2)
  • Perkuliahan (1)
  • Umum (11)

Tags

Adobe AdobeXD Ajax Bigjpg bot Canva Canva Pro Canva Pro Gratis CSS Desain Grafis ENSP Google Drive Google Takeout Gratis Handbrake HTML HUAWEI Icons8 Internet Security Investasi jQuery K-Drama Kamera Laravel Laravel 11 Logika PEMROGRAMAN Phising Photoshop Review Serial Cina Serial Korea sosmed Spam Telepon SSL TBA Telkomsel Tutorial TV Indonesia TV Streaming twitter Video Waifu2x Webcam windows 11
Flag Counter

Copyright © 2025 · awiez.com