Selamat datang! Ingin belajar Laravel, framework PHP yang populer untuk membangun aplikasi web modern? Anda berada di tempat yang tepat! Tutorial ini akan memandu Anda, para pemula, langkah demi langkah dalam memahami dan menggunakan Laravel. Kita akan mulai dari dasar, tanpa asumsi pengetahuan Laravel sebelumnya. Bersiaplah untuk membangun aplikasi web pertama Anda dengan Laravel!
1. Apa Itu Laravel dan Mengapa Harus Belajar Laravel?
Sebelum masuk ke tutorial Laravel dasar, mari kita pahami dulu apa itu Laravel dan mengapa Laravel menjadi pilihan yang tepat untuk pengembangan aplikasi web.
Laravel adalah sebuah framework PHP open-source yang dirancang untuk mempermudah dan mempercepat proses pengembangan aplikasi web. Dibangun dengan mengikuti pola desain MVC (Model-View-Controller), Laravel menyediakan struktur kode yang terorganisir, fitur-fitur yang kaya, dan komunitas yang besar, sehingga menjadikannya pilihan favorit di kalangan developer.
Mengapa Belajar Laravel?
- Sederhana dan Mudah Dipelajari: Laravel memiliki sintaks yang bersih dan mudah dipahami, bahkan untuk pemula sekalipun. Dokumentasinya juga sangat lengkap dan mudah diikuti.
- Fitur Lengkap: Laravel menyediakan berbagai fitur bawaan yang dibutuhkan untuk pengembangan aplikasi web, seperti routing, templating engine (Blade), ORM (Eloquent), authentication, authorization, dan masih banyak lagi.
- Keamanan Terjamin: Laravel memiliki fitur-fitur keamanan bawaan yang kuat, seperti proteksi CSRF (Cross-Site Request Forgery), SQL injection, dan XSS (Cross-Site Scripting).
- Komunitas yang Besar: Laravel memiliki komunitas yang besar dan aktif di seluruh dunia. Anda dapat dengan mudah menemukan bantuan, tutorial, dan library yang Anda butuhkan.
- Peluang Karir: Permintaan untuk developer Laravel terus meningkat, sehingga belajar Laravel dapat membuka peluang karir yang menarik.
Dengan semua keuntungan ini, tidak heran Laravel menjadi salah satu framework PHP yang paling populer saat ini. Jadi, mari kita mulai tutorial Laravel dasar ini!
2. Persiapan Awal: Instalasi dan Konfigurasi Lingkungan Pengembangan Laravel
Sebelum memulai kode, kita perlu mempersiapkan lingkungan pengembangan Laravel. Berikut adalah langkah-langkah instalasi dan konfigurasi yang perlu Anda lakukan:
- Instalasi PHP: Pastikan PHP sudah terinstall di komputer Anda. Laravel membutuhkan PHP versi 7.4 atau lebih tinggi. Anda dapat mengunduh dan menginstal PHP dari php.net.
- Instalasi Composer: Composer adalah dependency manager untuk PHP. Anda akan menggunakan Composer untuk menginstal Laravel dan library lainnya. Unduh dan instal Composer dari getcomposer.org.
- Instalasi Node.js dan NPM (Opsional): Jika Anda berencana menggunakan fitur-fitur front-end Laravel, seperti Laravel Mix, Anda perlu menginstal Node.js dan NPM. Unduh dan instal Node.js dari nodejs.org. NPM biasanya sudah termasuk dalam instalasi Node.js.
- Database: Laravel mendukung berbagai database, seperti MySQL, PostgreSQL, SQLite, dan SQL Server. Pilih database yang Anda inginkan dan pastikan sudah terinstall dan berjalan. MySQL adalah pilihan yang populer untuk pemula.
- Text Editor/IDE: Pilih text editor atau IDE (Integrated Development Environment) yang Anda sukai. Beberapa pilihan populer adalah Visual Studio Code (dengan plugin Laravel), Sublime Text, PHPStorm, dan Atom.
Setelah semua persiapan selesai, saatnya untuk menginstal Laravel! Buka terminal atau command prompt Anda, navigasikan ke direktori tempat Anda ingin menyimpan proyek Laravel, dan jalankan perintah berikut:
composer create-project laravel/laravel nama-proyek-anda
Ganti nama-proyek-anda
dengan nama proyek yang Anda inginkan. Composer akan mengunduh dan menginstal semua dependensi Laravel yang dibutuhkan. Proses ini mungkin memakan waktu beberapa menit, tergantung pada kecepatan koneksi internet Anda.
Setelah instalasi selesai, masuk ke direktori proyek Laravel Anda:
cd nama-proyek-anda
Selanjutnya, kita perlu melakukan konfigurasi database. Buka file .env
di direktori proyek Anda. File ini berisi konfigurasi lingkungan untuk aplikasi Laravel. Cari bagian konfigurasi database dan sesuaikan dengan pengaturan database Anda:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nama_database_anda
DB_USERNAME=nama_pengguna_database
DB_PASSWORD=password_database
Ganti nama_database_anda
, nama_pengguna_database
, dan password_database
dengan kredensial database Anda.
Terakhir, jalankan perintah berikut untuk menghasilkan application key:
php artisan key:generate
Perintah ini akan menghasilkan application key yang unik dan menyimpannya di file .env
. Application key digunakan untuk mengenkripsi data sensitif.
Selamat! Anda telah berhasil menginstal dan mengkonfigurasi Laravel!
3. Struktur Direktori Laravel: Memahami Arsitektur Aplikasi
Memahami struktur direktori Laravel sangat penting untuk mengembangkan aplikasi web dengan baik. Berikut adalah penjelasan singkat mengenai direktori-direktori utama dalam proyek Laravel:
app/
: Direktori ini berisi sebagian besar kode aplikasi Anda, seperti model, controller, middleware, dan providers.app/Models/
: Berisi definisi model Eloquent, yang mewakili tabel-tabel dalam database Anda.app/Http/Controllers/
: Berisi controller, yang menangani request HTTP dan mengembalikan response.app/Http/Middleware/
: Berisi middleware, yang dapat memfilter request HTTP sebelum mencapai controller.app/Providers/
: Berisi service providers, yang digunakan untuk mendaftarkan service ke dalam container Laravel.
bootstrap/
: Berisi file-file yang digunakan untuk mem-bootstrap aplikasi Laravel.config/
: Berisi file-file konfigurasi untuk berbagai aspek aplikasi Anda, seperti database, session, mail, dan lainnya.database/
: Berisi file-file yang terkait dengan database, seperti migrations, seeders, dan factories.database/migrations/
: Berisi migrations, yang digunakan untuk membuat dan memodifikasi struktur database.database/seeders/
: Berisi seeders, yang digunakan untuk mengisi database dengan data awal.
public/
: Direktori ini berisi file-file publik, seperti CSS, JavaScript, dan gambar. Ini adalah direktori yang diakses langsung oleh web server.resources/
: Berisi file-file resource, seperti views, assets (CSS, JavaScript), dan language files.resources/views/
: Berisi views, yang merupakan template HTML yang digunakan untuk menampilkan data.resources/lang/
: Berisi language files, yang digunakan untuk menerjemahkan teks ke berbagai bahasa.
routes/
: Berisi file-file yang mendefinisikan rute aplikasi Anda.routes/web.php
: Berisi rute untuk aplikasi web.routes/api.php
: Berisi rute untuk API.
storage/
: Berisi file-file yang disimpan oleh aplikasi Anda, seperti logs, cache, dan uploaded files.tests/
: Berisi file-file untuk pengujian unit dan fitur.vendor/
: Berisi library-library yang diinstal melalui Composer. Jangan mengubah file-file di direktori ini.
Memahami struktur direktori ini akan membantu Anda menavigasi proyek Laravel Anda dengan lebih mudah dan menemukan file yang Anda butuhkan dengan cepat.
4. Routing Laravel: Menentukan Bagaimana Aplikasi Merespon Request
Routing adalah proses menentukan bagaimana aplikasi Laravel merespon request HTTP yang masuk. Dalam Laravel, rute didefinisikan dalam file-file di direktori routes/
. File routes/web.php
digunakan untuk mendefinisikan rute untuk aplikasi web, sementara file routes/api.php
digunakan untuk mendefinisikan rute untuk API.
Berikut adalah contoh dasar routing:
<?php
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('/', function () {
return view('welcome');
});
Route::get('/halo', function () {
return 'Halo Dunia!';
});
Route::get('/user/{id}', function ($id) {
return 'User dengan ID: ' . $id;
});
Route::get('/', function () { ... });
mendefinisikan rute untuk request GET ke path/
. Ketika pengguna mengunjungi halaman utama, Laravel akan menjalankan fungsi yang didefinisikan dan mengembalikan viewwelcome
.Route::get('/halo', function () { ... });
mendefinisikan rute untuk request GET ke path/halo
. Ketika pengguna mengunjungi halaman/halo
, Laravel akan menjalankan fungsi yang didefinisikan dan mengembalikan string'Halo Dunia!'
.Route::get('/user/{id}', function ($id) { ... });
mendefinisikan rute untuk request GET ke path/user/{id}
, di mana{id}
adalah parameter. Ketika pengguna mengunjungi halaman/user/123
, Laravel akan menjalankan fungsi yang didefinisikan dan mengembalikan string'User dengan ID: 123'
.
Anda juga dapat menggunakan method HTTP lainnya, seperti Route::post()
, Route::put()
, Route::delete()
, dan Route::patch()
.
Selain menggunakan closure (fungsi anonim) untuk menangani request, Anda juga dapat menggunakan controller. Controller adalah class yang berisi method-method yang menangani request.
Route::get('/users', [UserController::class, 'index']);
Kode di atas mendefinisikan rute untuk request GET ke path /users
dan menunjuknya ke method index
di class UserController
.
Routing adalah bagian penting dari aplikasi Laravel. Dengan routing, Anda dapat menentukan bagaimana aplikasi Anda merespon berbagai request dari pengguna.
5. Controller Laravel: Logika Aplikasi dan Interaksi dengan Model
Controller adalah class yang menangani request HTTP dan mengembalikan response. Controller berisi logika aplikasi dan bertanggung jawab untuk berinteraksi dengan model (database) dan view (template).
Untuk membuat controller, Anda dapat menggunakan perintah Artisan:
php artisan make:controller UserController
Perintah ini akan membuat file UserController.php
di direktori app/Http/Controllers/
.
Berikut adalah contoh controller:
<?php
namespace AppHttpControllers;
use AppModelsUser;
use IlluminateHttpRequest;
class UserController extends Controller
{
/**
* Menampilkan daftar semua user.
*
* @return IlluminateHttpResponse
*/
public function index()
{
$users = User::all();
return view('users.index', ['users' => $users]);
}
/**
* Menampilkan form untuk membuat user baru.
*
* @return IlluminateHttpResponse
*/
public function create()
{
return view('users.create');
}
/**
* Menyimpan user baru ke database.
*
* @param IlluminateHttpRequest $request
* @return IlluminateHttpResponse
*/
public function store(Request $request)
{
$request->validate([
'name' => 'required',
'email' => 'required|email|unique:users',
'password' => 'required|min:8',
]);
User::create([
'name' => $request->name,
'email' => $request->email,
'password' => bcrypt($request->password),
]);
return redirect('/users')->with('success', 'User berhasil ditambahkan.');
}
/**
* Menampilkan detail user.
*
* @param int $id
* @return IlluminateHttpResponse
*/
public function show($id)
{
$user = User::findOrFail($id);
return view('users.show', ['user' => $user]);
}
/**
* Menampilkan form untuk mengedit user.
*
* @param int $id
* @return IlluminateHttpResponse
*/
public function edit($id)
{
$user = User::findOrFail($id);
return view('users.edit', ['user' => $user]);
}
/**
* Mengupdate user di database.
*
* @param IlluminateHttpRequest $request
* @param int $id
* @return IlluminateHttpResponse
*/
public function update(Request $request, $id)
{
$request->validate([
'name' => 'required',
'email' => 'required|email|unique:users,email,' . $id,
]);
$user = User::findOrFail($id);
$user->name = $request->name;
$user->email = $request->email;
$user->save();
return redirect('/users')->with('success', 'User berhasil diupdate.');
}
/**
* Menghapus user dari database.
*
* @param int $id
* @return IlluminateHttpResponse
*/
public function destroy($id)
{
$user = User::findOrFail($id);
$user->delete();
return redirect('/users')->with('success', 'User berhasil dihapus.');
}
}
Controller ini memiliki method-method yang umum digunakan dalam aplikasi web, seperti index
(menampilkan daftar), create
(menampilkan form untuk membuat), store
(menyimpan), show
(menampilkan detail), edit
(menampilkan form untuk mengedit), dan destroy
(menghapus).
Controller menggunakan model User
untuk berinteraksi dengan database. Model User
mewakili tabel users
di database. Controller juga menggunakan view untuk menampilkan data ke pengguna. View adalah template HTML yang berisi data dari controller.
Controller adalah komponen penting dalam aplikasi Laravel. Controller berisi logika aplikasi dan bertanggung jawab untuk berinteraksi dengan model dan view.
6. Blade Templating Engine Laravel: Membuat Tampilan Dinamis
Blade adalah templating engine yang disediakan oleh Laravel. Blade memungkinkan Anda membuat tampilan dinamis dengan mudah. Blade menggunakan sintaks yang sederhana dan mudah dipahami.
File Blade disimpan dengan ekstensi .blade.php
di direktori resources/views/
.
Berikut adalah contoh view Blade:
<!DOCTYPE html>
<html>
<head>
<title>Daftar User</title>
</head>
<body>
<h1>Daftar User</h1>
@if (session('success'))
<div class="alert alert-success">
{{ session('success') }}
</div>
@endif
<ul>
@foreach ($users as $user)
<li>{{ $user->name }} ({{ $user->email }})</li>
@endforeach
</ul>
</body>
</html>
@if (session('success')) ... @endif
adalah directive Blade untuk kondisi. Kode di dalam directive@if
akan dijalankan hanya jika sessionsuccess
ada.{{ session('success') }}
menampilkan nilai sessionsuccess
.@foreach ($users as $user) ... @endforeach
adalah directive Blade untuk loop. Kode di dalam directive@foreach
akan dijalankan untuk setiap user dalam array$users
.{{ $user->name }}
dan{{ $user->email }}
menampilkan nama dan email user.
Anda dapat meneruskan data dari controller ke view menggunakan array asosiatif:
return view('users.index', ['users' => $users]);
Dalam contoh ini, array $users
diteruskan ke view users.index
. Anda dapat mengakses array $users
di view menggunakan sintaks Blade.
Blade juga mendukung layout. Layout adalah template dasar yang digunakan untuk semua halaman di aplikasi Anda. Layout biasanya berisi header, footer, dan sidebar.
Untuk menggunakan layout, Anda dapat menggunakan directive @extends
:
@extends('layouts.app')
@section('content')
<h1>Halaman Utama</h1>
<p>Selamat datang di halaman utama!</p>
@endsection
Kode di atas memperluas layout layouts.app
dan mendefinisikan section content
. Layout layouts.app
akan berisi header, footer, dan sidebar, dan section content
akan disisipkan di dalam layout.
Blade adalah alat yang ampuh untuk membuat tampilan dinamis dalam aplikasi Laravel. Dengan Blade, Anda dapat membuat tampilan yang kompleks dengan mudah.
7. Eloquent ORM Laravel: Interaksi dengan Database yang Mudah
Eloquent ORM (Object-Relational Mapper) adalah fitur bawaan Laravel yang mempermudah interaksi dengan database. Dengan Eloquent, Anda dapat berinteraksi dengan database menggunakan objek PHP, tanpa perlu menulis query SQL secara manual.
Untuk menggunakan Eloquent, Anda perlu membuat model. Model adalah class PHP yang mewakili tabel di database.
Untuk membuat model, Anda dapat menggunakan perintah Artisan:
php artisan make:model User
Perintah ini akan membuat file User.php
di direktori app/Models/
.
Berikut adalah contoh model:
<?php
namespace AppModels;
use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateFoundationAuthUser as Authenticatable;
use IlluminateNotificationsNotifiable;
class User extends Authenticatable
{
use HasFactory, Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
'name',
'email',
'password',
];
/**
* The attributes that should be hidden for serialization.
*
* @var array<int, string>
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* The attributes that should be cast.
*
* @var array<string, string>
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
}
protected $fillable
adalah array yang berisi daftar kolom yang boleh diisi secara massal (mass assignment).protected $hidden
adalah array yang berisi daftar kolom yang disembunyikan ketika model dikonversi ke array atau JSON.
Setelah membuat model, Anda dapat menggunakan model untuk melakukan berbagai operasi database, seperti:
- Mengambil semua data:
User::all()
- Mengambil data berdasarkan ID:
User::find(1)
- Membuat data baru:
User::create(['name' => 'John Doe', 'email' => '[email protected]', 'password' => bcrypt('password')])
- Mengupdate data:
$user = User::find(1);
$user->name = 'Jane Doe';
$user->save();
- Menghapus data:
$user = User::find(1);
$user->delete();
Eloquent juga mendukung relationships. Relationships memungkinkan Anda mendefinisikan hubungan antara tabel-tabel di database. Misalnya, model User
dapat memiliki hubungan “has many” dengan model Post
(satu user memiliki banyak post).
Eloquent ORM adalah fitur yang sangat berguna untuk mempermudah interaksi dengan database dalam aplikasi Laravel. Dengan Eloquent, Anda dapat berinteraksi dengan database menggunakan objek PHP, tanpa perlu menulis query SQL secara manual. Ini membuat kode Anda lebih mudah dibaca, dipelihara, dan diuji.
8. Migrations Laravel: Mengelola Skema Database dengan Mudah
Migrations adalah cara untuk mengelola skema database Anda secara terstruktur dan terkontrol. Dengan migrations, Anda dapat membuat, memodifikasi, dan menghapus tabel dan kolom database menggunakan kode PHP, bukan dengan menjalankan perintah SQL secara manual. Ini membuat pengelolaan database lebih mudah, terutama dalam tim development.
Untuk membuat migration, Anda dapat menggunakan perintah Artisan:
php artisan make:migration create_users_table
Perintah ini akan membuat file migration baru di direktori database/migrations/
. Nama file migration akan berisi timestamp, sehingga Laravel dapat mengurutkan migrations berdasarkan waktu pembuatannya.
Berikut adalah contoh file migration:
<?php
use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
};
- Method
up()
digunakan untuk membuat atau memodifikasi skema database. - Method
down()
digunakan untuk membatalkan migration (misalnya, menghapus tabel).
Dalam method up()
, Anda dapat menggunakan Schema builder untuk membuat tabel dan kolom. Schema builder menyediakan berbagai method untuk mendefinisikan tipe data, constraint, dan indeks.
Setelah membuat migration, Anda dapat menjalankan migration menggunakan perintah Artisan:
php artisan migrate
Perintah ini akan menjalankan semua migrations yang belum dijalankan sebelumnya.
Untuk membatalkan migration terakhir, Anda dapat menggunakan perintah Artisan:
php artisan migrate:rollback
Untuk membatalkan semua migrations dan memulai dari awal, Anda dapat menggunakan perintah Artisan:
php artisan migrate:fresh
Migrations adalah alat yang sangat berguna untuk mengelola skema database dalam aplikasi Laravel. Dengan migrations, Anda dapat mengelola database dengan kode, yang membuat pengelolaan database lebih mudah, terstruktur, dan terkontrol.
9. Kesimpulan: Langkah Selanjutnya dalam Belajar Laravel
Selamat! Anda telah menyelesaikan tutorial Laravel dasar untuk pemula ini. Anda telah mempelajari dasar-dasar Laravel, termasuk instalasi, konfigurasi, struktur direktori, routing, controller, Blade templating engine, Eloquent ORM, dan migrations.
Namun, ini hanyalah awal dari perjalanan Anda dalam belajar Laravel. Ada banyak lagi fitur dan konsep Laravel yang perlu Anda pelajari untuk menjadi developer Laravel yang mahir.
Berikut adalah beberapa langkah selanjutnya yang dapat Anda ambil:
- Pelajari lebih lanjut tentang Eloquent Relationships: Pelajari cara mendefinisikan hubungan antara tabel-tabel di database menggunakan Eloquent Relationships.
- Pelajari tentang Laravel Authentication dan Authorization: Pelajari cara mengimplementasikan fitur authentication (login/logout) dan authorization (hak akses) dalam aplikasi Laravel Anda. Laravel menyediakan fitur authentication bawaan yang mudah digunakan.
- Pelajari tentang Laravel Middleware: Pelajari cara menggunakan middleware untuk memfilter request HTTP sebelum mencapai controller.
- Pelajari tentang Laravel Testing: Pelajari cara menulis unit tests dan feature tests untuk memastikan kode Anda berfungsi dengan benar.
- Bangun Proyek Nyata: Cara terbaik untuk belajar Laravel adalah dengan membangun proyek nyata. Cobalah membangun aplikasi web sederhana, seperti blog, to-do list, atau forum.
- Ikuti Komunitas Laravel: Bergabunglah dengan komunitas Laravel online, seperti forum, grup Facebook, atau Slack. Di sana Anda dapat bertanya, berbagi pengetahuan, dan belajar dari developer Laravel lainnya.
- Baca Dokumentasi Laravel: Dokumentasi Laravel sangat lengkap dan mudah diikuti. Luangkan waktu untuk membaca dokumentasi Laravel untuk mempelajari lebih lanjut tentang fitur-fitur Laravel. Anda dapat menemukan dokumentasi Laravel di laravel.com.
Dengan latihan dan ketekunan, Anda akan menjadi developer Laravel yang handal. Semoga berhasil dalam perjalanan belajar Laravel Anda! Teruslah eksplorasi dan jangan takut untuk mencoba hal-hal baru!