Laravel adalah salah satu framework PHP yang paling populer digunakan oleh para developer web. Kekuatan Laravel terletak pada sintaksnya yang elegan, dokumentasi yang lengkap, dan komunitas yang besar dan aktif. Jika kamu ingin meningkatkan skill coding, khususnya dalam pengembangan web menggunakan PHP, maka belajar Laravel adalah pilihan yang tepat. Artikel ini akan memberikanmu contoh project Laravel sederhana untuk latihan yang akan membantumu memahami konsep-konsep dasar Laravel dan mengasah kemampuanmu dalam membangun aplikasi web.
1. Mengapa Memilih Laravel untuk Latihan Coding?
Sebelum kita masuk ke contoh project, mari kita pahami dulu mengapa Laravel begitu ideal untuk latihan coding:
- Struktur yang Terorganisir: Laravel menggunakan pola MVC (Model-View-Controller) yang memaksa kamu untuk memisahkan logika aplikasi, tampilan, dan data. Ini membantumu menulis kode yang lebih terstruktur dan mudah dipelihara.
- Fitur yang Kaya: Laravel menyediakan banyak fitur built-in seperti routing, templating engine (Blade), ORM (Eloquent), dan authentication. Ini memungkinkanmu fokus pada logika bisnis aplikasi, bukan pada tugas-tugas dasar.
- Dokumentasi yang Lengkap: Dokumentasi Laravel sangat detail dan mudah diikuti. Ini menjadi sumber belajar yang sangat baik saat kamu menemui kesulitan.
- Komunitas yang Aktif: Komunitas Laravel sangat besar dan aktif. Kamu bisa menemukan banyak sumber daya, tutorial, dan bantuan online jika kamu membutuhkan.
- Populer di Industri: Laravel banyak digunakan oleh perusahaan-perusahaan besar dan startup. Menguasai Laravel akan membuka banyak peluang karir untukmu.
Singkatnya, Laravel menawarkan lingkungan belajar yang ideal karena strukturnya yang jelas, fitur-fiturnya yang melimpah, dukungan dokumentasi yang kuat, komunitas yang responsif, dan popularitasnya di industri.
2. Persiapan Awal: Instalasi dan Konfigurasi Laravel
Sebelum memulai project, pastikan kamu sudah menginstal dan mengkonfigurasi Laravel di komputermu. Berikut adalah langkah-langkah dasarnya:
-
Pastikan Persyaratan Terpenuhi:
- PHP >= 7.3
- Ekstensi PHP:
BCMath
,Ctype
,Fileinfo
,JSON
,Mbstring
,OpenSSL
,PDO
,Tokenizer
,XML
,cURL
- Composer (Package Manager untuk PHP)
-
Instal Composer: Jika belum memiliki Composer, unduh dan instal dari https://getcomposer.org/.
-
Buat Project Laravel Baru: Buka terminal atau command prompt dan jalankan perintah berikut:
composer create-project laravel/laravel nama-project
Ganti
nama-project
dengan nama project yang kamu inginkan. -
Masuk ke Direktori Project:
cd nama-project
-
Konfigurasi Database: Buka file
.env
dan konfigurasi koneksi database sesuai dengan pengaturan database lokalmu (MySQL, PostgreSQL, SQLite). Contoh:DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=nama_database DB_USERNAME=username_database DB_PASSWORD=password_database
Pastikan database sudah dibuat di server database kamu.
-
Jalankan Migrasi: Jalankan perintah berikut untuk membuat tabel-tabel default (users, password_resets):
php artisan migrate
-
Jalankan Server Development:
php artisan serve
Buka browser dan akses
http://127.0.0.1:8000
(atau port yang ditampilkan di terminal) untuk melihat halaman default Laravel.
Dengan langkah-langkah di atas, kamu sudah siap untuk mulai mengembangkan contoh project Laravel sederhana untuk latihan kamu.
3. Project Laravel Sederhana: Aplikasi To-Do List (CRUD)
Sebagai contoh project Laravel sederhana untuk latihan, kita akan membuat aplikasi To-Do List yang memungkinkan pengguna untuk:
- Create (Membuat): Menambahkan tugas baru ke daftar.
- Read (Membaca): Menampilkan daftar tugas yang sudah ada.
- Update (Memperbarui): Mengedit tugas yang sudah ada.
- Delete (Menghapus): Menghapus tugas dari daftar.
Aplikasi ini akan mencakup semua operasi CRUD (Create, Read, Update, Delete) dasar, sehingga sangat cocok untuk melatih kemampuanmu dalam menggunakan Laravel.
4. Membuat Model, Migrasi, dan Controller untuk To-Do List
Pertama, kita perlu membuat model, migrasi, dan controller untuk mengelola data tugas.
-
Membuat Model dan Migrasi: Jalankan perintah berikut di terminal:
php artisan make:model Task -m
Perintah ini akan membuat file model
Task.php
dan file migrasi untuk membuat tabeltasks
. -
Mengedit Migrasi: Buka file migrasi yang baru dibuat (terletak di folder
database/migrations
) dan tambahkan kolomtitle
dandescription
:<?php use IlluminateDatabaseMigrationsMigration; use IlluminateDatabaseSchemaBlueprint; use IlluminateSupportFacadesSchema; class CreateTasksTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('tasks', function (Blueprint $table) { $table->id(); $table->string('title'); $table->text('description')->nullable(); $table->boolean('completed')->default(false); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('tasks'); } }
Kolom
title
akan menyimpan judul tugas,description
akan menyimpan deskripsi tugas (opsional), dancompleted
akan menandai apakah tugas sudah selesai atau belum. -
Jalankan Migrasi: Jalankan kembali perintah
php artisan migrate
untuk membuat tabeltasks
di database. -
Membuat Controller: Jalankan perintah berikut untuk membuat controller
TaskController.php
:php artisan make:controller TaskController
Controller ini akan berisi semua logika untuk menangani operasi CRUD pada tugas.
5. Implementasi Fungsi CRUD di Controller: TaskController
Sekarang, mari kita implementasikan fungsi-fungsi CRUD di TaskController.php
:
<?php
namespace AppHttpControllers;
use AppModelsTask;
use IlluminateHttpRequest;
class TaskController extends Controller
{
/**
* Display a listing of the resource.
*
* @return IlluminateHttpResponse
*/
public function index()
{
$tasks = Task::all();
return view('tasks.index', compact('tasks'));
}
/**
* Show the form for creating a new resource.
*
* @return IlluminateHttpResponse
*/
public function create()
{
return view('tasks.create');
}
/**
* Store a newly created resource in storage.
*
* @param IlluminateHttpRequest $request
* @return IlluminateHttpResponse
*/
public function store(Request $request)
{
$request->validate([
'title' => 'required',
]);
Task::create($request->all());
return redirect()->route('tasks.index')
->with('success','Task created successfully.');
}
/**
* Display the specified resource.
*
* @param AppModelsTask $task
* @return IlluminateHttpResponse
*/
public function show(Task $task)
{
return view('tasks.show',compact('task'));
}
/**
* Show the form for editing the specified resource.
*
* @param AppModelsTask $task
* @return IlluminateHttpResponse
*/
public function edit(Task $task)
{
return view('tasks.edit',compact('task'));
}
/**
* Update the specified resource in storage.
*
* @param IlluminateHttpRequest $request
* @param AppModelsTask $task
* @return IlluminateHttpResponse
*/
public function update(Request $request, Task $task)
{
$request->validate([
'title' => 'required',
]);
$task->update($request->all());
return redirect()->route('tasks.index')
->with('success','Task updated successfully');
}
/**
* Remove the specified resource from storage.
*
* @param AppModelsTask $task
* @return IlluminateHttpResponse
*/
public function destroy(Task $task)
{
$task->delete();
return redirect()->route('tasks.index')
->with('success','Task deleted successfully');
}
}
Controller ini memiliki fungsi-fungsi:
index()
: Menampilkan daftar semua tugas.create()
: Menampilkan form untuk membuat tugas baru.store()
: Menyimpan tugas baru ke database.show()
: Menampilkan detail satu tugas.edit()
: Menampilkan form untuk mengedit tugas yang sudah ada.update()
: Memperbarui data tugas di database.destroy()
: Menghapus tugas dari database.
6. Membuat Views dengan Blade Templating Engine
Laravel menggunakan Blade sebagai templating engine. Kita perlu membuat view untuk menampilkan daftar tugas, form untuk membuat dan mengedit tugas, dan detail tugas. Buat folder tasks
di dalam folder resources/views
. Kemudian, buat file-file berikut di dalam folder tasks
:
index.blade.php
(Menampilkan daftar tugas)create.blade.php
(Form untuk membuat tugas baru)edit.blade.php
(Form untuk mengedit tugas)show.blade.php
(Menampilkan detail tugas)
Berikut adalah contoh isi dari index.blade.php
:
<!DOCTYPE html>
<html>
<head>
<title>To-Do List</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
<div class="container mt-2">
<div class="row">
<div class="col-lg-12 margin-tb">
<div class="pull-left">
<h2>To-Do List</h2>
</div>
<div class="pull-right mb-2">
<a class="btn btn-success" href="{{ route('tasks.create') }}"> Create New Task</a>
</div>
</div>
</div>
@if ($message = Session::get('success'))
<div class="alert alert-success">
<p>{{ $message }}</p>
</div>
@endif
<table class="table table-bordered">
<tr>
<th>ID</th>
<th>Title</th>
<th>Description</th>
<th>Actions</th>
</tr>
@foreach ($tasks as $task)
<tr>
<td>{{ $task->id }}</td>
<td>{{ $task->title }}</td>
<td>{{ $task->description }}</td>
<td>
<form action="{{ route('tasks.destroy',$task->id) }}" method="Post">
<a class="btn btn-primary" href="{{ route('tasks.edit',$task->id) }}">Edit</a>
@csrf
@method('DELETE')
<button type="submit" class="btn btn-danger">Delete</button>
</form>
</td>
</tr>
@endforeach
</table>
</div>
</body>
</html>
Contoh create.blade.php
:
<!DOCTYPE html>
<html>
<head>
<title>Create Task</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
<div class="container mt-2">
<div class="row">
<div class="col-lg-12 margin-tb">
<div class="pull-left">
<h2>Add New Task</h2>
</div>
<div class="pull-right">
<a class="btn btn-primary" href="{{ route('tasks.index') }}"> Back</a>
</div>
</div>
</div>
@if(session('status'))
<div class="alert alert-success mb-1 mt-1">
{{ session('status') }}
</div>
@endif
<form action="{{ route('tasks.store') }}" method="POST" enctype="multipart/form-data">
@csrf
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<strong>Task Title:</strong>
<input type="text" name="title" class="form-control" placeholder="Task Title">
@error('title')
<div class="alert alert-danger mt-1 mb-1">{{ $message }}</div>
@enderror
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-12">
<div class="form-group">
<strong>Task Description:</strong>
<textarea class="form-control" style="height:150px" name="description" placeholder="Task Description"></textarea>
</div>
</div>
<div class="col-xs-12 col-sm-12 col-md-12 text-center">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
</div>
</body>
</html>
Isi file edit.blade.php
dan show.blade.php
dapat disesuaikan sesuai kebutuhan.
7. Konfigurasi Routes di web.php
Terakhir, kita perlu mendefinisikan routes untuk mengakses fungsi-fungsi di TaskController.php
. Buka file routes/web.php
dan tambahkan baris berikut:
<?php
use IlluminateSupportFacadesRoute;
use AppHttpControllersTaskController;
/*
|--------------------------------------------------------------------------
| 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('/', function () {
return view('welcome');
});
Route::resource('tasks', TaskController::class);
Baris Route::resource('tasks', TaskController::class);
akan otomatis membuat semua routes yang dibutuhkan untuk operasi CRUD pada resource tasks
.
8. Menguji Aplikasi To-Do List
Setelah semua langkah di atas selesai, jalankan server development (jika belum berjalan):
php artisan serve
Buka browser dan akses http://127.0.0.1:8000/tasks
. Kamu akan melihat daftar tugas (yang masih kosong). Coba tambahkan tugas baru, edit tugas yang sudah ada, dan hapus tugas. Pastikan semua operasi CRUD berfungsi dengan baik.
9. Pengembangan Lebih Lanjut: Fitur Tambahan
Setelah berhasil membuat aplikasi To-Do List dasar, kamu bisa mengembangkan aplikasi ini lebih lanjut dengan menambahkan fitur-fitur berikut:
- Authentication (Autentikasi): Memungkinkan pengguna untuk membuat akun dan login. Hanya pengguna yang login yang bisa mengakses dan mengelola tugas mereka sendiri. (Gunakan
php artisan make:auth
untuk scaffolding authentication). - Validasi Lebih Ketat: Menambahkan validasi yang lebih ketat pada form untuk memastikan data yang dimasukkan valid.
- Pencarian: Memungkinkan pengguna untuk mencari tugas berdasarkan judul atau deskripsi.
- Prioritas: Menambahkan fitur untuk mengatur prioritas tugas (tinggi, sedang, rendah).
- Kategori: Mengelompokkan tugas ke dalam kategori-kategori tertentu.
- Tanggal Jatuh Tempo: Menambahkan tanggal jatuh tempo untuk setiap tugas.
- Integrasi dengan API Eksternal: Misalnya, mengintegrasikan dengan API cuaca untuk menampilkan cuaca saat ini di tampilan detail tugas.
Menambahkan fitur-fitur ini akan membantu kamu memperdalam pemahaman tentang Laravel dan meningkatkan skill codingmu.
10. Tips dan Trik: Best Practices dalam Pengembangan Laravel
Berikut adalah beberapa tips dan trik untuk membantu kamu menulis kode Laravel yang lebih baik:
- Gunakan Artisan Console: Artisan adalah command-line interface yang sangat powerful yang disediakan oleh Laravel. Manfaatkan Artisan untuk membuat model, migrasi, controller, dan komponen lainnya.
- Manfaatkan Eloquent ORM: Eloquent ORM memudahkan kamu untuk berinteraksi dengan database. Gunakan Eloquent untuk membuat query, menyimpan data, dan memperbarui data.
- Gunakan Blade Templating Engine: Blade memudahkan kamu untuk membuat tampilan yang dinamis dan mudah dipelihara. Manfaatkan fitur-fitur Blade seperti layouts, sections, dan components.
- Gunakan Dependency Injection: Dependency Injection memungkinkan kamu untuk membuat kode yang lebih fleksibel dan mudah diuji. Gunakan Dependency Injection untuk mengelola dependencies antara kelas-kelas kamu.
- Tulis Unit Tests: Unit tests membantu kamu untuk memastikan kode kamu berfungsi dengan benar. Tulis unit tests untuk menguji semua fungsi-fungsi penting di aplikasi kamu.
- Ikuti PSR Standards: PSR (PHP Standards Recommendations) adalah serangkaian standar coding untuk PHP. Ikuti PSR standards untuk memastikan kode kamu konsisten dan mudah dibaca oleh orang lain.
- Gunakan Debugging Tools: Gunakan debugging tools seperti Xdebug untuk membantu kamu menemukan dan memperbaiki bug di kode kamu.
- Baca Dokumentasi: Dokumentasi Laravel sangat lengkap dan mudah diikuti. Baca dokumentasi untuk mempelajari lebih lanjut tentang fitur-fitur Laravel.
- Bergabung dengan Komunitas: Bergabung dengan komunitas Laravel untuk mendapatkan bantuan dan berbagi pengetahuan dengan developer lain.
Dengan mengikuti tips dan trik ini, kamu akan dapat menulis kode Laravel yang lebih baik dan meningkatkan skill codingmu.
11. Sumber Belajar Laravel Tambahan
Selain dokumentasi resmi Laravel, berikut adalah beberapa sumber belajar Laravel tambahan yang bisa kamu manfaatkan:
- Laravel News: Situs web yang menyediakan berita, tutorial, dan artikel tentang Laravel. (https://laravel-news.com/)
- Laracasts: Situs web yang menyediakan video tutorial tentang Laravel dan teknologi web lainnya. (https://laracasts.com/)
- Stack Overflow: Situs web tanya jawab yang berisi banyak pertanyaan dan jawaban tentang Laravel. (https://stackoverflow.com/)
- GitHub: Jelajahi repositori Laravel di GitHub untuk melihat contoh kode dan berkontribusi pada proyek open source. (https://github.com/laravel/laravel)
- Udemy dan Coursera: Platform-platform ini menawarkan berbagai kursus online tentang Laravel. Cari kursus yang sesuai dengan tingkat keahlianmu.
Manfaatkan sumber-sumber belajar ini untuk memperdalam pemahamanmu tentang Laravel dan meningkatkan skill codingmu.
12. Kesimpulan: Tingkatkan Skill Coding dengan Project Laravel
Laravel adalah framework PHP yang powerful dan menyenangkan untuk dipelajari. Dengan mengerjakan contoh project Laravel sederhana untuk latihan seperti aplikasi To-Do List di atas, kamu akan dapat memahami konsep-konsep dasar Laravel, mengasah kemampuanmu dalam membangun aplikasi web, dan meningkatkan skill codingmu secara keseluruhan. Jangan ragu untuk bereksperimen, mencoba hal-hal baru, dan terus belajar. Selamat mencoba!