Laravel adalah framework PHP yang populer di kalangan pengembang web. Kemudahannya dalam penggunaan, struktur yang rapi, dan fitur-fitur canggih menjadikannya pilihan ideal untuk membangun berbagai jenis aplikasi web, mulai dari yang sederhana hingga yang kompleks. Jika kamu seorang pemula yang ingin mempelajari Laravel, membangun project sederhana adalah cara terbaik untuk memulai. Artikel ini akan memberikan contoh project Laravel sederhana untuk latihan: membangun aplikasi web, lengkap dengan langkah-langkah dan penjelasan yang mudah dipahami. Mari kita mulai!
1. Mengapa Memilih Laravel untuk Latihan? Keunggulan Framework Laravel
Sebelum masuk ke contoh project Laravel sederhana untuk latihan, mari kita bahas mengapa Laravel menjadi pilihan yang tepat untuk para pemula. Beberapa keunggulan utama Laravel antara lain:
- Mudah Dipelajari: Sintaks Laravel yang ekspresif dan dokumentasi yang lengkap membuatnya relatif mudah dipelajari, bahkan bagi mereka yang baru mengenal framework PHP.
- Struktur yang Terorganisir: Laravel memiliki struktur yang terorganisir dengan baik, mengikuti pola MVC (Model-View-Controller). Ini membantu kamu memahami alur kerja aplikasi web dan menjaga kode tetap rapi.
- Fitur Lengkap: Laravel menyediakan banyak fitur bawaan yang mempermudah pengembangan, seperti routing, ORM (Eloquent), templating engine (Blade), otentikasi, dan banyak lagi.
- Komunitas yang Aktif: Laravel memiliki komunitas pengembang yang besar dan aktif. Ini berarti kamu dapat dengan mudah menemukan bantuan dan sumber daya online jika mengalami kesulitan.
- Keamanan: Laravel menekankan keamanan, dengan menyediakan fitur-fitur seperti cross-site scripting (XSS) protection dan cross-site request forgery (CSRF) protection.
Dengan semua keunggulan ini, Laravel adalah framework yang ideal untuk memulai perjalananmu dalam pengembangan web.
2. Merencanakan Project Latihan: Aplikasi To-Do List Sederhana
Dalam artikel ini, kita akan membangun aplikasi To-Do List sederhana sebagai contoh project Laravel sederhana untuk latihan. Aplikasi ini memungkinkan pengguna untuk:
- Membuat daftar tugas (to-do items).
- Melihat daftar tugas.
- Menandai tugas sebagai selesai.
- Menghapus tugas.
Aplikasi ini cukup sederhana untuk dipahami oleh pemula, tetapi tetap mencakup konsep-konsep dasar Laravel yang penting, seperti routing, models, views, dan controllers.
Database:
Kita akan menggunakan database SQLite untuk kesederhanaan. SQLite adalah database ringan yang tidak memerlukan konfigurasi server terpisah.
Tabel todos
:
Kolom | Tipe Data | Keterangan |
---|---|---|
id |
INTEGER | Primary Key, Auto-increment |
task |
TEXT | Deskripsi tugas |
completed |
BOOLEAN | Status tugas (0: belum selesai, 1: selesai) |
created_at |
TIMESTAMP | Waktu pembuatan tugas |
updated_at |
TIMESTAMP | Waktu pembaruan tugas terakhir |
3. Setup Lingkungan Pengembangan Laravel: Instalasi dan Konfigurasi
Sebelum mulai membuat contoh project Laravel sederhana untuk latihan, pastikan kamu telah menyiapkan lingkungan pengembangan Laravel. Berikut adalah langkah-langkahnya:
-
Instal PHP: Pastikan kamu telah menginstal PHP versi 8.0 atau lebih tinggi. Kamu bisa mengunduh PHP dari situs resminya: https://www.php.net/downloads
-
Instal Composer: Composer adalah dependency manager untuk PHP. Kamu akan menggunakan Composer untuk menginstal Laravel dan paket-paket lainnya. Unduh dan instal Composer dari situs resminya: https://getcomposer.org/
-
Instal Laravel Installer: Laravel Installer memungkinkan kamu membuat project Laravel baru dengan mudah melalui terminal. Buka terminal atau command prompt dan jalankan perintah berikut:
composer global require laravel/installer
-
Buat Project Laravel Baru: Buka terminal dan navigasi ke direktori tempat kamu ingin menyimpan project. Kemudian, jalankan perintah berikut:
laravel new todo-app
Ini akan membuat direktori baru bernama
todo-app
yang berisi instalasi Laravel yang baru. -
Konfigurasi Database: Karena kita menggunakan SQLite, kita perlu membuat file database baru. Buka terminal dan navigasi ke direktori
todo-app
. Kemudian, jalankan perintah berikut:touch database/database.sqlite
Selanjutnya, buka file
.env
di direktoritodo-app
dan ubah konfigurasi database menjadi:DB_CONNECTION=sqlite DB_DATABASE=database/database.sqlite
Pastikan untuk menghapus atau mengomentari baris konfigurasi database lainnya.
Setelah menyelesaikan langkah-langkah ini, kamu telah berhasil menyiapkan lingkungan pengembangan Laravel dan siap untuk memulai contoh project Laravel sederhana untuk latihan.
4. Membuat Model dan Migrasi: Definisi Struktur Data
Langkah selanjutnya dalam membangun contoh project Laravel sederhana untuk latihan adalah membuat model dan migrasi untuk tabel todos
.
-
Buat Model To-Do: Buka terminal dan jalankan perintah berikut:
php artisan make:model Todo
Ini akan membuat file model baru di
app/Models/Todo.php
. -
Buat Migrasi To-Do: Buka terminal dan jalankan perintah berikut:
php artisan make:migration create_todos_table
Ini akan membuat file migrasi baru di
database/migrations
. -
Definisikan Skema Tabel: Buka file migrasi yang baru dibuat (misalnya,
database/migrations/yyyy_mm_dd_create_todos_table.php
) dan ubah methodup()
menjadi:<?php use IlluminateDatabaseMigrationsMigration; use IlluminateDatabaseSchemaBlueprint; use IlluminateSupportFacadesSchema; class CreateTodosTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('todos', function (Blueprint $table) { $table->id(); $table->text('task'); $table->boolean('completed')->default(false); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('todos'); } }
Kode ini mendefinisikan skema untuk tabel
todos
dengan kolomid
,task
,completed
,created_at
, danupdated_at
. -
Jalankan Migrasi: Buka terminal dan jalankan perintah berikut:
php artisan migrate
Ini akan menjalankan migrasi dan membuat tabel
todos
di database SQLite. -
Definisikan Fillable Attributes di Model: Buka file model
app/Models/Todo.php
dan tambahkan properti$fillable
untuk menentukan atribut mana yang dapat diisi secara massal (mass assignable):<?php namespace AppModels; use IlluminateDatabaseEloquentFactoriesHasFactory; use IlluminateDatabaseEloquentModel; class Todo extends Model { use HasFactory; protected $fillable = [ 'task', 'completed', ]; }
Ini memungkinkan kita untuk membuat dan memperbarui data
Todo
dengan mudah melalui mass assignment.
5. Membuat Controller dan Routes: Menangani Permintaan HTTP
Selanjutnya, kita akan membuat controller dan routes untuk menangani permintaan HTTP yang terkait dengan aplikasi To-Do List kita. Ini penting dalam contoh project Laravel sederhana untuk latihan ini.
-
Buat Controller To-Do: Buka terminal dan jalankan perintah berikut:
php artisan make:controller TodoController
Ini akan membuat file controller baru di
app/Http/Controllers/TodoController.php
. -
Definisikan Routes: Buka file
routes/web.php
dan tambahkan routes berikut:<?php use AppHttpControllersTodoController; use IlluminateSupportFacadesRoute; /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ Route::get('/', [TodoController::class, 'index'])->name('todos.index'); Route::post('/', [TodoController::class, 'store'])->name('todos.store'); Route::put('/{todo}', [TodoController::class, 'update'])->name('todos.update'); Route::delete('/{todo}', [TodoController::class, 'destroy'])->name('todos.destroy');
Route::get('/', ...)
: Menangani permintaan GET ke root (/) dan menampilkan daftar tugas.Route::post('/', ...)
: Menangani permintaan POST ke root (/) untuk membuat tugas baru.Route::put('/{todo}', ...)
: Menangani permintaan PUT ke root (/) dengan parameter{todo}
untuk memperbarui tugas.Route::delete('/{todo}', ...)
: Menangani permintaan DELETE ke root (/) dengan parameter{todo}
untuk menghapus tugas.
-
Implementasikan Method di Controller: Buka file
app/Http/Controllers/TodoController.php
dan implementasikan method-method yang sesuai:<?php namespace AppHttpControllers; use AppModelsTodo; use IlluminateHttpRequest; class TodoController extends Controller { /** * Display a listing of the resource. * * @return IlluminateHttpResponse */ public function index() { $todos = Todo::all(); return view('todos.index', compact('todos')); } /** * Store a newly created resource in storage. * * @param IlluminateHttpRequest $request * @return IlluminateHttpResponse */ public function store(Request $request) { $request->validate([ 'task' => 'required', ]); Todo::create($request->all()); return redirect()->route('todos.index') ->with('success','Task created successfully.'); } /** * Update the specified resource in storage. * * @param IlluminateHttpRequest $request * @param AppModelsTodo $todo * @return IlluminateHttpResponse */ public function update(Request $request, Todo $todo) { $todo->update(['completed' => !$todo->completed]); return redirect()->route('todos.index') ->with('success','Task updated successfully.'); } /** * Remove the specified resource from storage. * * @param AppModelsTodo $todo * @return IlluminateHttpResponse */ public function destroy(Todo $todo) { $todo->delete(); return redirect()->route('todos.index') ->with('success','Task deleted successfully.'); } }
index()
: Mengambil semua dataTodo
dari database dan mengirimkannya ke viewtodos.index
.store()
: Memvalidasi request dan membuat dataTodo
baru di database.update()
: Memperbarui statuscompleted
dari dataTodo
yang ada.destroy()
: Menghapus dataTodo
dari database.
6. Membuat Views dengan Blade Templating Engine: Tampilan Antarmuka Pengguna
Langkah terakhir dalam membangun contoh project Laravel sederhana untuk latihan adalah membuat views menggunakan Blade templating engine. Blade memungkinkan kita untuk membuat template HTML yang dinamis dan mudah dikelola.
-
Buat Direktori Views: Buat direktori
todos
di dalam direktoriresources/views
. -
Buat File
index.blade.php
: Buat fileresources/views/todos/index.blade.php
dan tambahkan kode berikut:<!DOCTYPE html> <html> <head> <title>To-Do List</title> <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"> </head> <body> <div class="container"> <h1>To-Do List</h1> @if ($message = Session::get('success')) <div class="alert alert-success"> <p>{{ $message }}</p> </div> @endif <form action="{{ route('todos.store') }}" method="POST"> @csrf <div class="mb-3"> <label for="task" class="form-label">Task:</label> <input type="text" class="form-control" id="task" name="task" required> </div> <button type="submit" class="btn btn-primary">Add Task</button> </form> <table class="table"> <thead> <tr> <th>Task</th> <th>Completed</th> <th>Actions</th> </tr> </thead> <tbody> @foreach ($todos as $todo) <tr> <td>{{ $todo->task }}</td> <td> @if ($todo->completed) Yes @else No @endif </td> <td> <form action="{{ route('todos.update', $todo->id) }}" method="POST"> @csrf @method('PUT') <button type="submit" class="btn btn-sm btn-info">Toggle Complete</button> </form> <form action="{{ route('todos.destroy', $todo->id) }}" method="POST"> @csrf @method('DELETE') <button type="submit" class="btn btn-sm btn-danger">Delete</button> </form> </td> </tr> @endforeach </tbody> </table> </div> </body> </html>
Kode ini membuat tampilan untuk menampilkan daftar tugas, formulir untuk menambahkan tugas baru, dan tombol untuk menandai tugas sebagai selesai atau menghapusnya. Menggunakan Bootstrap untuk styling sederhana.
7. Menjalankan Aplikasi Laravel dan Uji Coba: Validasi dan Debugging
Setelah menyelesaikan semua langkah di atas, kamu dapat menjalankan aplikasi Laravel dan melakukan uji coba untuk memastikan semuanya berfungsi dengan baik.
-
Jalankan Server Pengembangan: Buka terminal dan jalankan perintah berikut:
php artisan serve
Ini akan memulai server pengembangan Laravel.
-
Buka Aplikasi di Browser: Buka browser dan kunjungi alamat
http://localhost:8000
. Kamu akan melihat tampilan To-Do List. -
Uji Coba Aplikasi: Coba tambahkan beberapa tugas, tandai tugas sebagai selesai, dan hapus tugas. Pastikan semuanya berfungsi seperti yang diharapkan.
-
Validasi dan Debugging: Jika kamu menemukan bug atau kesalahan, gunakan debugging tools Laravel atau error messages untuk mencari tahu penyebabnya dan memperbaikinya. Jangan ragu untuk mencari bantuan di dokumentasi Laravel atau komunitas online.
8. Fitur Tambahan: Validasi Input dan Pesan Error
Untuk meningkatkan contoh project Laravel sederhana untuk latihan ini, kita bisa menambahkan fitur validasi input dan pesan error.
-
Validasi Input di Controller: Di method
store()
diTodoController.php
, kita sudah menambahkan validasi. Pastikan fieldtask
wajib diisi. -
Menampilkan Pesan Error: Untuk menampilkan pesan error jika validasi gagal, kita bisa menambahkan kode berikut di view
resources/views/todos/index.blade.php
:@if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif
Kode ini akan menampilkan daftar pesan error jika ada kesalahan validasi.
9. Fitur Lanjutan: Otentikasi Pengguna (User Authentication)
Untuk contoh project Laravel sederhana untuk latihan yang lebih menantang, kamu bisa menambahkan fitur otentikasi pengguna. Ini memungkinkan pengguna untuk membuat akun, login, dan logout. Hanya pengguna yang login yang dapat mengakses dan mengelola daftar tugas mereka.
-
Instal Laravel UI: Buka terminal dan jalankan perintah berikut:
composer require laravel/ui
-
Generate Authentication Scaffolding: Jalankan perintah berikut:
php artisan ui:auth
Ini akan membuat routes, controllers, dan views yang diperlukan untuk otentikasi pengguna.
-
Jalankan Migrasi: Buka terminal dan jalankan perintah berikut:
php artisan migrate
Ini akan membuat tabel
users
di database. -
Lindungi Routes dengan Middleware
auth
: Ubah routes diroutes/web.php
untuk melindungi routes To-Do List dengan middlewareauth
:Route::middleware(['auth'])->group(function () { Route::get('/', [TodoController::class, 'index'])->name('todos.index'); Route::post('/', [TodoController::class, 'store'])->name('todos.store'); Route::put('/{todo}', [TodoController::class, 'update'])->name('todos.update'); Route::delete('/{todo}', [TodoController::class, 'destroy'])->name('todos.destroy'); });
Ini memastikan bahwa hanya pengguna yang login yang dapat mengakses routes ini.
-
Ubah Controller untuk Menggunakan User ID: Ubah controller
TodoController.php
untuk menggunakan ID pengguna yang login saat membuat, memperbarui, atau menghapus dataTodo
.Contoh, di method
store
:public function store(Request $request) { $request->validate([ 'task' => 'required', ]); $todo = new Todo(); $todo->task = $request->task; $todo->user_id = auth()->user()->id; // Asumsikan ada kolom user_id di tabel todos $todo->save(); return redirect()->route('todos.index') ->with('success','Task created successfully.'); }
Kamu juga perlu menambahkan kolom
user_id
ke tabeltodos
dan memperbarui modelTodo.php
untuk mencerminkan perubahan ini.
10. Deploy Aplikasi Laravel ke Hosting: Membagikan Hasil Kerja
Setelah kamu puas dengan contoh project Laravel sederhana untuk latihan ini, kamu bisa melakukan deployment ke hosting agar dapat diakses oleh orang lain. Terdapat banyak pilihan hosting untuk aplikasi Laravel, baik yang gratis maupun berbayar. Beberapa di antaranya adalah:
- Heroku: Platform cloud yang populer dan mudah digunakan, terutama untuk deployment aplikasi web.
- Netlify: Platform cloud yang fokus pada static site hosting, tetapi juga mendukung aplikasi Laravel dengan konfigurasi yang tepat.
- DigitalOcean: Penyedia cloud infrastructure yang menawarkan virtual private servers (VPS) dengan harga yang terjangkau.
- Shared Hosting: Pilihan yang lebih murah dan mudah dikelola, tetapi mungkin memiliki batasan tertentu.
Langkah-langkah deployment bervariasi tergantung pada hosting yang kamu pilih. Secara umum, kamu perlu:
- Konfigurasi Hosting: Siapkan hosting dan database di server.
- Upload Kode Aplikasi: Upload kode aplikasi Laravel ke server.
- Konfigurasi Environment: Konfigurasi environment variables di server.
- Jalankan Migrasi: Jalankan migrasi untuk membuat tabel di database.
- Konfigurasi Web Server: Konfigurasi web server (misalnya, Apache atau Nginx) untuk mengarahkan permintaan ke aplikasi Laravel.
11. Kesimpulan: Meningkatkan Kemampuan dengan Project Laravel Sederhana
Membangun contoh project Laravel sederhana untuk latihan seperti aplikasi To-Do List adalah cara yang bagus untuk mempelajari dasar-dasar framework Laravel. Dengan mengikuti langkah-langkah yang telah dijelaskan dalam artikel ini, kamu dapat memahami konsep-konsep penting seperti routing, models, views, controllers, dan database.
Jangan ragu untuk bereksperimen dan menambahkan fitur-fitur baru ke project ini. Semakin banyak kamu berlatih, semakin mahir kamu dalam pengembangan web dengan Laravel. Selamat mencoba!
12. Sumber Daya Belajar Laravel: Dokumentasi dan Komunitas
Berikut adalah beberapa sumber daya belajar Laravel yang bisa kamu manfaatkan:
- Dokumentasi Laravel: https://laravel.com/docs – Sumber informasi yang paling lengkap dan akurat tentang Laravel.
- Laravel News: https://laravel-news.com/ – Situs web yang berisi berita, tutorial, dan artikel tentang Laravel.
- Laracasts: https://laracasts.com/ – Situs web yang menyediakan video tutorial berkualitas tinggi tentang Laravel dan teknologi web lainnya.
- Stack Overflow: https://stackoverflow.com/questions/tagged/laravel – Forum tanya jawab tempat kamu bisa mendapatkan bantuan dari komunitas pengembang Laravel.
- Laravel Indonesia: Grup Facebook untuk komunitas pengembang Laravel di Indonesia. Cari di Facebook dengan kata kunci “Laravel Indonesia”.
Dengan sumber daya ini, kamu dapat terus meningkatkan kemampuanmu dalam pengembangan web dengan Laravel.