Tutorial Laravel Lengkap untuk Pemula: Belajar Framework PHP Terpopuler

Laravel telah menjadi framework PHP yang paling populer di kalangan developer web saat ini. Dengan sintaks yang elegan, fitur yang kaya, dan komunitas yang besar, Laravel mempermudah pengembangan aplikasi web yang kompleks. Jika kamu seorang pemula dan ingin mempelajari Laravel, kamu berada di tempat yang tepat! Artikel ini akan memberikan tutorial Laravel lengkap untuk pemula, membimbingmu langkah demi langkah dalam belajar framework PHP terpopuler ini.

Daftar Isi

  1. Apa itu Laravel dan Mengapa Harus Mempelajarinya?
  2. Persiapan Awal: Instalasi dan Konfigurasi Lingkungan Pengembangan
  3. Dasar-Dasar Laravel: Routing, Controllers, dan Views
  4. Eloquent ORM: Interaksi Database yang Lebih Mudah
  5. Template Engine Blade: Membuat Tampilan yang Dinamis
  6. Form Handling dan Validasi: Menangani Input Pengguna
  7. Middleware: Kontrol Akses dan Modifikasi Request/Response
  8. Authentication: Mengamankan Aplikasi dengan Autentikasi Pengguna
  9. Artisan Console: Mempermudah Pekerjaan dengan Command-Line
  10. Testing Laravel: Memastikan Kualitas Kode
  11. Deploying Aplikasi Laravel: Mempersiapkan Aplikasi untuk Produksi
  12. Sumber Belajar Lanjutan dan Komunitas Laravel

1. Apa itu Laravel dan Mengapa Harus Mempelajarinya?

Laravel adalah sebuah framework PHP open-source yang didesain untuk mengembangkan aplikasi web dengan lebih cepat dan efisien. Dibangun dengan pola desain MVC (Model-View-Controller), Laravel menyediakan struktur yang terorganisir dan mudah dipahami, memisahkan logika bisnis, tampilan, dan interaksi database.

Mengapa harus mempelajari Laravel? Ada banyak alasan, di antaranya:

  • Sintaks yang Elegan dan Mudah Dibaca: Laravel dikenal dengan sintaksnya yang jelas dan mudah dibaca, membuat kode lebih mudah dipahami dan dipelihara.
  • Fitur yang Kaya: Laravel menyediakan banyak fitur bawaan yang mempermudah pengembangan aplikasi, seperti routing, database migration, authentication, authorization, queues, cache, dan masih banyak lagi.
  • Eloquent ORM: Laravel menggunakan Eloquent ORM (Object-Relational Mapper) yang mempermudah interaksi dengan database. Kamu tidak perlu menulis query SQL yang rumit, cukup menggunakan method yang disediakan oleh Eloquent.
  • Template Engine Blade: Blade adalah template engine yang powerfull dan mudah digunakan, memungkinkan kamu membuat tampilan yang dinamis dengan sintaks yang sederhana.
  • Keamanan: Laravel memiliki fitur keamanan yang kuat, seperti perlindungan terhadap Cross-Site Scripting (XSS) dan SQL Injection, membantu kamu membangun aplikasi yang lebih aman.
  • Komunitas yang Besar dan Aktif: Laravel memiliki komunitas yang besar dan aktif, menyediakan dukungan, sumber belajar, dan paket (package) yang melimpah. Kamu akan mudah menemukan solusi jika mengalami masalah atau membutuhkan bantuan.
  • Artisan Console: Artisan adalah command-line interface (CLI) yang disediakan oleh Laravel, memungkinkan kamu menjalankan berbagai perintah untuk mempermudah pengembangan aplikasi, seperti membuat controller, model, migration, dan lain-lain.
  • Job Queue dan Background Processing: Laravel memiliki dukungan bawaan untuk antrian tugas (job queues), memungkinkan kamu menjalankan tugas-tugas yang memakan waktu di latar belakang, seperti mengirim email atau memproses gambar. Ini meningkatkan responsivitas aplikasimu.
  • Composer Dependency Manager: Laravel menggunakan Composer, dependency manager standar PHP, untuk mengelola library dan package. Ini mempermudah instalasi dan pembaruan dependency aplikasi.
  • Peluang Karir: Menguasai Laravel akan meningkatkan peluang karirmu sebagai developer web. Banyak perusahaan yang mencari developer dengan pengalaman Laravel.

Dengan semua keunggulan ini, tidak heran jika Laravel menjadi framework PHP yang paling populer dan banyak digunakan di berbagai industri. Tutorial Laravel lengkap untuk pemula ini akan membantumu memulai perjalananmu dalam dunia Laravel.

2. Persiapan Awal: Instalasi dan Konfigurasi Lingkungan Pengembangan

Sebelum memulai belajar framework PHP terpopuler ini, kamu perlu menyiapkan lingkungan pengembangan terlebih dahulu. Berikut adalah langkah-langkahnya:

  1. Instalasi PHP: Pastikan kamu sudah menginstal PHP versi 7.3 atau lebih tinggi. Kamu bisa mengunduh PHP dari situs resminya: https://www.php.net/downloads.

    • Windows: Gunakan XAMPP atau WAMP untuk instalasi yang lebih mudah.
    • macOS: Gunakan MAMP atau Homebrew.
    • Linux: Gunakan package manager sistem operasi (misalnya, apt untuk Debian/Ubuntu, yum untuk CentOS/RHEL).

    Pastikan juga ekstensi PHP berikut terinstal:

    • BCMath PHP Extension
    • Ctype PHP Extension
    • JSON PHP Extension
    • Mbstring PHP Extension
    • OpenSSL PHP Extension
    • PDO PHP Extension
    • Tokenizer PHP Extension
    • XML PHP Extension
  2. Instalasi Composer: Composer adalah dependency manager untuk PHP. Kamu bisa mengunduh dan menginstalnya dari situs resminya: https://getcomposer.org/download/.

  3. Instalasi Node.js dan npm (Opsional): Node.js dan npm (Node Package Manager) dibutuhkan jika kamu ingin menggunakan Laravel Mix untuk mengelola asset (CSS, JavaScript). Kamu bisa mengunduh dan menginstalnya dari situs resminya: https://nodejs.org/en/download/.

  4. Instalasi Laravel Installer (Opsional): Laravel Installer mempermudah pembuatan proyek Laravel baru. Kamu bisa menginstalnya dengan perintah Composer:

    composer global require laravel/installer
  5. Membuat Proyek Laravel Baru:

    • Menggunakan Laravel Installer:

      laravel new nama-proyek
    • Menggunakan Composer:

      composer create-project --prefer-dist laravel/laravel nama-proyek

    Ganti nama-proyek dengan nama proyek yang kamu inginkan.

  6. Konfigurasi Database: Buka file .env di direktori proyek Laravelmu. Cari bagian yang berkaitan dengan database dan sesuaikan dengan konfigurasi databasemu:

    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=nama_database
    DB_USERNAME=nama_pengguna
    DB_PASSWORD=password

    Ganti nama_database, nama_pengguna, dan password dengan informasi yang sesuai.

  7. Menjalankan Server Pengembangan: Masuk ke direktori proyek Laravelmu melalui terminal dan jalankan perintah berikut:

    php artisan serve

    Ini akan menjalankan server pengembangan Laravel. Kamu bisa mengakses aplikasi Laravelmu melalui browser di alamat http://127.0.0.1:8000.

Dengan langkah-langkah di atas, kamu sudah berhasil menyiapkan lingkungan pengembangan dan membuat proyek Laravel baru. Sekarang kamu siap untuk melanjutkan ke langkah selanjutnya dan belajar framework PHP terpopuler ini!

3. Dasar-Dasar Laravel: Routing, Controllers, dan Views

Memahami routing, controller, dan view adalah kunci dalam belajar framework PHP terpopuler, Laravel. Ketiga komponen ini adalah fondasi dari pola desain MVC yang digunakan oleh Laravel.

  • Routing: Routing bertugas untuk memetakan URL (Uniform Resource Locator) ke controller yang sesuai. Dengan kata lain, routing menentukan apa yang akan dijalankan ketika pengguna mengakses URL tertentu. File routing utama di Laravel terletak di routes/web.php.

    Contoh routing:

    Route::get('/', function () {
        return view('welcome');
    });
    
    Route::get('/about', 'AboutController@index');
    
    Route::resource('posts', 'PostController');
    • Route::get('/', ...): Menentukan route untuk URL / (halaman utama).
    • Route::get('/about', 'AboutController@index'): Menentukan route untuk URL /about dan mengarahkannya ke method index di controller AboutController.
    • Route::resource('posts', 'PostController'): Membuat serangkaian route standar untuk mengelola sumber daya posts (misalnya, index, create, store, show, edit, update, destroy).
  • Controllers: Controller bertugas untuk menangani logika aplikasi, menerima request dari pengguna, berinteraksi dengan model (jika diperlukan), dan mengembalikan response berupa view atau data. Controller terletak di direktori app/Http/Controllers.

    Contoh controller:

    <?php
    
    namespace AppHttpControllers;
    
    use IlluminateHttpRequest;
    
    class AboutController extends Controller
    {
        public function index()
        {
            return view('about');
        }
    }
    • namespace AppHttpControllers;: Mendefinisikan namespace untuk controller.
    • class AboutController extends Controller: Mendefinisikan class controller AboutController yang mewarisi dari class Controller.
    • public function index(): Mendefinisikan method index yang akan dijalankan ketika URL /about diakses. Method ini mengembalikan view about.
  • Views: View bertugas untuk menampilkan data ke pengguna. View berisi HTML, CSS, dan JavaScript yang digunakan untuk membuat tampilan aplikasi. View terletak di direktori resources/views.

    Contoh view (resources/views/about.blade.php):

    <!DOCTYPE html>
    <html>
    <head>
        <title>About Us</title>
    </head>
    <body>
        <h1>About Us</h1>
        <p>This is the about page.</p>
    </body>
    </html>

    Ini adalah view sederhana yang menampilkan judul “About Us” dan paragraf “This is the about page.”

Dengan memahami routing, controller, dan view, kamu sudah memiliki dasar yang kuat untuk belajar framework PHP terpopuler Laravel. Selanjutnya, kita akan membahas Eloquent ORM, yang mempermudah interaksi dengan database.

4. Eloquent ORM: Interaksi Database yang Lebih Mudah

Eloquent ORM (Object-Relational Mapper) adalah fitur yang sangat penting dalam tutorial Laravel lengkap untuk pemula ini. Eloquent ORM menyederhanakan interaksi dengan database dengan memungkinkan kamu berinteraksi dengan tabel database menggunakan object PHP. Kamu tidak perlu menulis query SQL yang rumit, cukup menggunakan method yang disediakan oleh Eloquent.

  • Models: Model merepresentasikan sebuah tabel database. Setiap instance dari model merepresentasikan sebuah baris di tabel tersebut. Model terletak di direktori app/Models.

    Contoh model (app/Models/Post.php):

    <?php
    
    namespace AppModels;
    
    use IlluminateDatabaseEloquentModel;
    
    class Post extends Model
    {
        // Nama tabel (jika berbeda dengan nama model)
        protected $table = 'posts';
    
        // Kolom yang boleh diisi (mass assignment)
        protected $fillable = ['title', 'content'];
    
        // Kolom yang tidak boleh diisi (guarded)
        protected $guarded = ['id'];
    
        // Relasi dengan tabel lain
        public function user()
        {
            return $this->belongsTo('AppModelsUser');
        }
    }
    • namespace AppModels;: Mendefinisikan namespace untuk model.
    • class Post extends Model: Mendefinisikan class model Post yang mewarisi dari class Model.
    • protected $table = 'posts';: Mendefinisikan nama tabel yang terkait dengan model. Jika nama tabel sama dengan nama model (dalam bentuk snake case dan plural), maka tidak perlu didefinisikan.
    • protected $fillable = ['title', 'content'];: Mendefinisikan kolom-kolom yang boleh diisi melalui mass assignment.
    • protected $guarded = ['id'];: Mendefinisikan kolom-kolom yang tidak boleh diisi melalui mass assignment.
    • public function user(): Mendefinisikan relasi dengan tabel users (one-to-many). Model Post belongs to Model User.
  • Querying Data: Eloquent menyediakan berbagai method untuk melakukan query data:

    // Mengambil semua data
    $posts = Post::all();
    
    // Mengambil data berdasarkan ID
    $post = Post::find(1);
    
    // Mengambil data dengan kondisi
    $posts = Post::where('title', 'like', '%Laravel%')->get();
    
    // Mengambil data dengan pagination
    $posts = Post::paginate(10);
  • Inserting Data:

    $post = new Post();
    $post->title = 'Judul Post Baru';
    $post->content = 'Isi Post Baru';
    $post->save();
    
    // Atau menggunakan mass assignment
    Post::create(['title' => 'Judul Post Baru', 'content' => 'Isi Post Baru']);
  • Updating Data:

    $post = Post::find(1);
    $post->title = 'Judul Post Diperbarui';
    $post->content = 'Isi Post Diperbarui';
    $post->save();
    
    // Atau menggunakan mass update
    Post::where('id', 1)->update(['title' => 'Judul Post Diperbarui', 'content' => 'Isi Post Diperbarui']);
  • Deleting Data:

    $post = Post::find(1);
    $post->delete();
    
    // Atau menggunakan delete by ID
    Post::destroy(1);

Dengan Eloquent ORM, interaksi dengan database menjadi lebih mudah, cepat, dan aman. Kamu tidak perlu khawatir tentang menulis query SQL yang rentan terhadap SQL Injection. Eloquent akan menangani semua itu untukmu.

5. Template Engine Blade: Membuat Tampilan yang Dinamis

Blade adalah template engine yang powerfull dan mudah digunakan, memungkinkan kamu membuat tampilan yang dinamis dengan sintaks yang sederhana. Bagian penting dari tutorial Laravel lengkap untuk pemula ini adalah memahami cara menggunakan Blade.

  • Sintaks Blade: Blade menggunakan sintaks yang diawali dengan {{ dan }} untuk menampilkan data, serta @ untuk directive (perintah).

    • Menampilkan Data:

      <h1>{{ $title }}</h1>
      <p>{{ $content }}</p>
    • Percabangan (if):

      @if ($isLoggedIn)
          <p>Welcome, {{ $username }}!</p>
      @else
          <p>Please login.</p>
      @endif
    • Perulangan (foreach):

      <ul>
          @foreach ($posts as $post)
              <li>{{ $post->title }}</li>
          @endforeach
      </ul>
    • Comments:

      {{-- This is a comment --}}
  • Template Inheritance: Blade memungkinkan kamu membuat layout utama dan mewariskannya ke view lain. Ini mempermudah pembuatan tampilan yang konsisten.

    • Layout Utama (resources/views/layouts/app.blade.php):

      <!DOCTYPE html>
      <html>
      <head>
          <title>@yield('title')</title>
      </head>
      <body>
          @include('partials.navbar')
      
          <div class="container">
              @yield('content')
          </div>
      
          @include('partials.footer')
      </body>
      </html>
      • @yield('title'): Menentukan bagian yang akan diisi oleh view lain.
      • @include('partials.navbar'): Menyertakan partial view navbar.
      • @yield('content'): Menentukan bagian yang akan diisi oleh view lain (isi konten).
      • @include('partials.footer'): Menyertakan partial view footer.
    • View yang Mewarisi Layout (resources/views/posts/index.blade.php):

      @extends('layouts.app')
      
      @section('title', 'Daftar Post')
      
      @section('content')
          <h1>Daftar Post</h1>
          <ul>
              @foreach ($posts as $post)
                  <li>{{ $post->title }}</li>
              @endforeach
          </ul>
      @endsection
      • @extends('layouts.app'): Menentukan bahwa view ini mewarisi layout layouts.app.
      • @section('title', 'Daftar Post'): Mengisi bagian title dengan “Daftar Post”.
      • @section('content'): Mengisi bagian content dengan daftar post.
  • Components: Blade juga mendukung components, yang memungkinkan kamu membuat reusable UI elements.

    • Membuat Komponen: Kamu bisa membuat komponen menggunakan Artisan console:

      php artisan make:component Alert

      Ini akan membuat class component di app/View/Components/Alert.php dan view component di resources/views/components/alert.blade.php.

    • Menggunakan Komponen:

      <x-alert type="success" message="Data berhasil disimpan." />

Dengan Blade, kamu bisa membuat tampilan yang dinamis, terstruktur, dan mudah dipelihara. Blade mempermudah pemisahan logika dan tampilan, membuat kode lebih bersih dan mudah dipahami.

6. Form Handling dan Validasi: Menangani Input Pengguna

Menangani form dan validasi input pengguna adalah bagian penting dari pengembangan aplikasi web. Laravel menyediakan fitur yang lengkap untuk mempermudah proses ini. Hal ini menjadi fokus dalam tutorial Laravel lengkap untuk pemula.

  • Membuat Form:

    <form method="POST" action="/posts">
        @csrf
    
        <label for="title">Title:</label><br>
        <input type="text" id="title" name="title"><br><br>
    
        <label for="content">Content:</label><br>
        <textarea id="content" name="content"></textarea><br><br>
    
        <input type="submit" value="Submit">
    </form>
    • @csrf: Menambahkan CSRF token untuk melindungi form dari serangan Cross-Site Request Forgery.
  • Menerima Input dari Form di Controller:

    <?php
    
    namespace AppHttpControllers;
    
    use IlluminateHttpRequest;
    
    class PostController extends Controller
    {
        public function store(Request $request)
        {
            $title = $request->input('title');
            $content = $request->input('content');
    
            // Simpan data ke database
        }
    }
    • Request $request: Menyuntikkan instance dari class Request yang berisi data request dari pengguna.
    • $request->input('title'): Mengambil nilai dari input dengan nama title.
  • Validasi Input: Laravel menyediakan fitur validasi yang powerfull untuk memastikan data yang diterima dari pengguna valid.

    • Menggunakan Validator Facade:

      <?php
      
      namespace AppHttpControllers;
      
      use IlluminateHttpRequest;
      use IlluminateSupportFacadesValidator;
      
      class PostController extends Controller
      {
          public function store(Request $request)
          {
              $validator = Validator::make($request->all(), [
                  'title' => 'required|max:255',
                  'content' => 'required',
              ]);
      
              if ($validator->fails()) {
                  return redirect('posts/create')
                              ->withErrors($validator)
                              ->withInput();
              }
      
              // Simpan data ke database
          }
      }
      • Validator::make($request->all(), [...]): Membuat instance dari validator dengan data request dan aturan validasi.
      • 'title' => 'required|max:255': Menentukan bahwa input title wajib diisi (required) dan maksimal 255 karakter.
      • 'content' => 'required': Menentukan bahwa input content wajib diisi.
      • $validator->fails(): Memeriksa apakah validasi gagal.
      • redirect('posts/create')->withErrors($validator)->withInput(): Mengarahkan kembali ke halaman form dengan pesan kesalahan dan data input yang sebelumnya diisi.
    • Menggunakan Form Request: Kamu juga bisa membuat Form Request class untuk memindahkan logika validasi ke class tersendiri.

      php artisan make:request StorePostRequest

      Ini akan membuat class StorePostRequest di app/Http/Requests. Kamu bisa menambahkan aturan validasi di method rules():

      <?php
      
      namespace AppHttpRequests;
      
      use IlluminateFoundationHttpFormRequest;
      
      class StorePostRequest extends FormRequest
      {
          public function authorize()
          {
              return true; // Sesuaikan dengan kebutuhan otorisasi
          }
      
          public function rules()
          {
              return [
                  'title' => 'required|max:255',
                  'content' => 'required',
              ];
          }
      }

      Kemudian, gunakan StorePostRequest di controller:

      <?php
      
      namespace AppHttpControllers;
      
      use AppHttpRequestsStorePostRequest;
      
      class PostController extends Controller
      {
          public function store(StorePostRequest $request)
          {
              // Simpan data ke database
          }
      }

      Laravel akan secara otomatis menjalankan validasi berdasarkan aturan yang didefinisikan di StorePostRequest.

  • Menampilkan Pesan Kesalahan Validasi di View:

    @if ($errors->any())
        <div class="alert alert-danger">
            <ul>
                @foreach ($errors->all() as $error)
                    <li>{{ $error }}</li>
                @endforeach
            </ul>
        </div>
    @endif

Dengan fitur form handling dan validasi dari Laravel, kamu bisa memproses form dengan mudah dan memastikan data yang diterima valid. Ini akan meningkatkan keamanan dan kualitas aplikasi web kamu.

7. Middleware: Kontrol Akses dan Modifikasi Request/Response

Middleware adalah lapisan antara request dan response di Laravel. Middleware memungkinkan kamu memfilter HTTP request yang masuk ke aplikasi dan memodifikasi response yang keluar dari aplikasi. Middleware sangat penting untuk mengontrol akses ke route, memvalidasi otentikasi, atau menambahkan header ke response. Ini adalah salah satu konsep lanjutan yang akan dikenalkan dalam tutorial Laravel lengkap untuk pemula.

  • Membuat Middleware: Kamu bisa membuat middleware menggunakan Artisan console:

    php artisan make:middleware CheckAge

    Ini akan membuat class middleware di app/Http/Middleware/CheckAge.php.

  • Contoh Middleware:

    <?php
    
    namespace AppHttpMiddleware;
    
    use Closure;
    use IlluminateHttpRequest;
    
    class CheckAge
    {
        public function handle(Request $request, Closure $next)
        {
            if ($request->age < 200) {
                return redirect('home');
            }
    
            return $next($request);
        }
    }
    • public function handle(Request $request, Closure $next): Method handle adalah method utama di middleware. Method ini menerima request dan closure $next.
    • $request: Objek request yang masuk.
    • $next: Closure yang akan menjalankan request selanjutnya dalam pipeline.
    • return redirect('home'): Jika kondisi tidak terpenuhi, middleware akan mengarahkan pengguna ke halaman home.
    • return $next($request): Jika kondisi terpenuhi, middleware akan melanjutkan request ke middleware selanjutnya atau route yang dituju.
  • Mendaftarkan Middleware:

    • Global Middleware: Middleware yang dijalankan untuk setiap request. Didaftarkan di app/Http/Kernel.php pada property $middleware.
    protected $middleware = [
        AppHttpMiddlewareTrustProxies::class,
        AppHttpMiddlewarePreventRequestsDuringMaintenance::class,
        IlluminateFoundationHttpMiddlewareValidatePostSize::class,
        AppHttpMiddlewareTrimStrings::class,
        IlluminateFoundationHttpMiddlewareConvertEmptyStringsToNull::class,
    ];
    • Route Middleware: Middleware yang hanya dijalankan untuk route tertentu. Didaftarkan di app/Http/Kernel.php pada property $routeMiddleware.
    protected $routeMiddleware = [
        'auth' => AppHttpMiddlewareAuthenticate::class,
        'auth.basic' => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class,
        'cache.headers' => IlluminateHttpMiddlewareSetCacheHeaders::class,
        'can' => IlluminateAuthMiddlewareAuthorize::class,
        'guest' => AppHttpMiddlewareRedirectIfAuthenticated::class,
        'signed' => IlluminateRoutingMiddlewareValidateSignature::class,
        'throttle' => IlluminateRoutingMiddlewareThrottleRequests::class,
        'verified' => IlluminateAuthMiddlewareEnsureEmailIsVerified::class,
        'checkage' => AppHttpMiddlewareCheckAge::class, // Daftar middleware CheckAge
    ];
  • Menggunakan Middleware di Route:

    Route::get('/admin', function () {
        // Hanya bisa diakses oleh admin
    })->middleware('auth'); // Menggunakan middleware auth
    
    Route::get('/profile', function () {
        // Hanya bisa diakses oleh user yang berusia di atas 200 tahun (contoh)
    })->middleware('checkage'); // Menggunakan middleware checkage

Dengan middleware, kamu bisa mengontrol akses ke route dengan mudah dan menambahkan logika tambahan sebelum atau sesudah request diproses.

8. Authentication: Mengamankan Aplikasi dengan Autentikasi Pengguna

Autentikasi adalah proses memverifikasi identitas pengguna. Laravel menyediakan fitur autentikasi yang lengkap dan mudah digunakan. Bagian ini sangat penting dalam tutorial Laravel lengkap untuk pemula ini.

  • Scaffolding Autentikasi: Laravel menyediakan perintah untuk membuat scaffolding autentikasi secara otomatis:

    php artisan ui:auth

    Perintah ini akan membuat view, controller, dan route yang diperlukan untuk autentikasi (registrasi, login, logout, reset password).

    Sebelum menjalankan perintah ini, pastikan kamu sudah menginstal laravel/ui:

    composer require laravel/ui

    Kamu juga perlu memilih frontend framework yang akan digunakan (Bootstrap, Vue, React):

    php artisan ui bootstrap
    php artisan ui vue
    php artisan ui react

    Setelah itu, jalankan npm install dan npm run dev untuk menginstal dependency dan mengompilasi asset.

  • Konfigurasi Autentikasi: Konfigurasi autentikasi terletak di config/auth.php. Di sini kamu bisa menentukan guard (driver autentikasi) dan provider (cara mengambil data pengguna).

    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
    
        'api' => [
            'driver' => 'token',
            'provider' => 'users',
            'hash' => false,
        ],
    ],
    
    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => AppModelsUser::class,
        ],
    ],
  • Menggunakan Fitur Autentikasi:

    • Login:

      use IlluminateSupportFacadesAuth;
      
      // Mencoba login
      if (Auth::attempt(['email' => $email, 'password' => $password])) {
          // Otentikasi berhasil
          return redirect()->intended('dashboard');
      }
      
      // Otentikasi gagal
      return back()->withErrors([
          'email' => 'Email atau password salah.',
      ]);
    • Logout:

      use IlluminateSupportFacadesAuth;
      
      Auth::logout();
      
      return redirect('/');
    • Memeriksa Apakah Pengguna Sudah Login:

      use IlluminateSupportFacadesAuth;
      
      if (Auth::check()) {
          // Pengguna sudah login
      } else {
          // Pengguna belum login
      }
    • Mendapatkan Data Pengguna yang Login:

      use IlluminateSupportFacadesAuth;
      
      $user = Auth::user();
  • Otorisasi (Authorization): Otorisasi adalah proses menentukan apa yang boleh dilakukan oleh pengguna yang sudah terautentikasi. Laravel menyediakan fitur otorisasi yang powerfull menggunakan policies.

    • Membuat Policy:

      php artisan make:policy PostPolicy --model=Post

      Ini akan membuat class policy di app/Policies/PostPolicy.php.

    • Contoh Policy:

      <?php
      
      namespace AppPolicies;
      
      use AppModelsUser;
      use AppModelsPost;
      use IlluminateAuthAccessHandlesAuthorization;
      
      class PostPolicy
      {
          use HandlesAuthorization;
      
          public function update(User $user, Post $post)
          {
              return $user->id === $post->user_id;
          }
      
          public function delete(User $user, Post $post)
          {
              return $user->id === $post->user_id;
          }
      }
      • public function update(User $user, Post $post): Menentukan apakah pengguna $user boleh mengupdate post $post.
      • public function delete(User $user, Post $post): Menentukan apakah pengguna $user boleh menghapus post $post.
    • Menggunakan Policy di Controller:

      <?php
      
      namespace AppHttpControllers;
      
      use AppModelsPost;
      use IlluminateSupportFacadesGate;
      
      class PostController extends Controller
      {
          public function update(Post $post)
          {
              if (Gate::allows('update', $post)) {
                  // Lanjutkan proses update
              } else {
                  abort(403, 'Unauthorized action.');
              }
          }
      
          public function destroy(Post $post)
          {
              if (Gate::allows('delete', $post)) {
                  // Lanjutkan proses delete
              } else {
                  abort(403, 'Unauthorized action.');
              }
          }
      }
      • Gate::allows('update', $post): Memeriksa apakah pengguna memiliki izin untuk melakukan action update terhadap post $post berdasarkan policy.
      • abort(403, 'Unauthorized action.'): Menghentikan eksekusi dengan kode status HTTP 403 (Forbidden) dan pesan kesalahan.

Dengan fitur autentikasi dan otorisasi dari Laravel, kamu bisa mengamankan aplikasi web kamu dengan mudah dan efektif.

9. Artisan Console: Mempermudah Pekerjaan dengan Command-Line

Artisan adalah command-line interface (CLI) yang disediakan oleh Laravel, memungkinkan kamu menjalankan berbagai perintah untuk mempermudah pengembangan aplikasi. Bagian ini akan menunjukkan bagaimana Artisan dapat membantu dalam tutorial Laravel lengkap untuk pemula ini.

  • Perintah-Perintah Artisan:

    • php artisan make:controller NamaController: Membuat controller baru.
    • php artisan make:model NamaModel: Membuat model baru.
    • php artisan make:migration create_nama_tabel_table: Membuat migration baru.
    • php artisan migrate: Menjalankan migration (membuat tabel di database).
    • php artisan migrate:rollback: Membatalkan migration terakhir.
    • php artisan make:seeder NamaSeeder: Membuat seeder baru.
    • php artisan db:seed: Menjalankan seeder (mengisi data ke database).
    • php artisan make:factory NamaFactory: Membuat factory baru.
    • php artisan tinker: Membuka REPL (Read-Eval-Print Loop) untuk berinteraksi dengan aplikasi.
    • php artisan cache:clear: Membersihkan cache aplikasi.
    • php artisan config:cache: Membuat cache konfigurasi.
    • php artisan route:list: Menampilkan daftar route yang terdaftar.
    • php artisan optimize:clear: Membersihkan cache konfigurasi dan route.
    • php artisan queue:work: Menjalankan queue worker.
  • Membuat Perintah Artisan Sendiri: Kamu juga bisa membuat perintah Artisan sendiri untuk mempermudah tugas-tugas tertentu.

    • php artisan make:command NamaCommand: Membuat command baru.

    • Contoh Command:

      
      <?php
      
      namespace AppConsoleCommands;
      
      use IlluminateConsoleCommand;
      
      class BackupDatabase extends Command
      {
          protected $signature = 'db:backup {--filename=}';
          protected $description = 'Backup database to a file';
      
          public function handle()
          {
              $filename = $this->option('filename') ?? 'backup-' . date('Y-m-d') . '.sql';
      
              $command = sprintf(
                  'mysqldump -u%s -p%s %s > %s',
                  config('database.connections.mysql.username'),