Routing, Controller, dan View (Blade Template)

Routing, Controller, dan View (Blade Template)

Routing, Controller, dan View (Blade Template)

Tujuan Pembelajaran

Mahasiswa mampu membuat route, menghubungkannya dengan controller, dan menampilkan data menggunakan Blade Template.

Routing, Controller, dan View (Blade Template)

Apa itu Routing?

  • Routing adalah pemetaan URL ke logika aplikasi.
  • Menghubungkan request user dengan kode yang akan dijalankan.
Routing, Controller, dan View (Blade Template)

File Routes di Laravel

  • File utama: routes/web.php untuk routing web.
  • routes/api.php untuk API routes.
Routing, Controller, dan View (Blade Template)

Sintaks Dasar Route

  • Contoh route GET:
Route::get('/welcome', function () {
    return 'Hello, World!';
});
Routing, Controller, dan View (Blade Template)

Route dengan Parameter

  • Membuat route dengan parameter:
Route::get('/user/{id}', function ($id) {
    return 'User ID: ' . $id;
});
Routing, Controller, dan View (Blade Template)

Route dengan Parameter Opsional

  • Parameter bisa opsional dengan default:
Route::get('/post/{id?}', function ($id = null) {
    return $id ? 'Post ID: ' . $id : 'All Posts';
});
Routing, Controller, dan View (Blade Template)

Named Routes

  • Memberi nama route untuk kemudahan:
Route::get('/profile', function () {
    // ...
})->name('profile');
  • Memanggil URL:
$url = route('profile');
Routing, Controller, dan View (Blade Template)

Route Groups

  • Mengelompokkan route dengan prefix:
Route::prefix('admin')->group(function () {
    Route::get('/dashboard', function () {
        return 'Admin Dashboard';
    });
});
Routing, Controller, dan View (Blade Template)

Middleware pada Route Groups

  • Menambahkan middleware pada grup route:
Route::middleware(['auth'])->group(function () {
    // routes yang harus login
});
Routing, Controller, dan View (Blade Template)

Apa itu Controller?

  • Controller mengatur alur logika sesuai request.
  • Memisahkan kode dari route ke class khusus.
Routing, Controller, dan View (Blade Template)

Membuat Controller dengan Artisan

  • Contoh perintah:
php artisan make:controller ProductController
Routing, Controller, dan View (Blade Template)

Struktur Controller

  • Controller adalah class PHP di folder app/Http/Controllers.
  • Contoh method:
public function index() {
    return view('products.index');
}
Routing, Controller, dan View (Blade Template)

Menghubungkan Route ke Controller

  • Sintaks route ke controller:
use App\Http\Controllers\ProductController;
Route::get('/products', [ProductController::class, 'index']);
Routing, Controller, dan View (Blade Template)

Resource Controller

  • Otomatis menyediakan 7 fungsi CRUD.
  • Contoh membuat resource controller:
php artisan make:controller ProductController --resource
  • Daftarkan dengan:
Route::resource('products', ProductController::class);
Routing, Controller, dan View (Blade Template)

Single Action Controller

  • Controller dengan satu method __invoke.
  • Cocok untuk aksi tunggal.
class ShowProfileController extends Controller {
    public function __invoke() {
        // logic
    }
}
Routing, Controller, dan View (Blade Template)

Apa itu View?

  • View adalah tampilan hasil yang dilihat user.
  • Menggunakan Blade Template di Laravel.
Routing, Controller, dan View (Blade Template)

Blade Template Engine

  • Blade memudahkan syntax templating PHP.
  • Keunggulan: mudah, bersih, cache efisien.
Routing, Controller, dan View (Blade Template)

Lokasi File Blade

  • Folder resources/views/.
  • File berekstensi .blade.php, contoh: welcome.blade.php.
Routing, Controller, dan View (Blade Template)

Menampilkan Data di Blade

  • Sintaks escape data:
{{ $name }}
  • Raw HTML (tidak di-escape):
{!! $htmlContent !!}
Routing, Controller, dan View (Blade Template)

Blade Directives

  • Kondisi:
@if ($user)
    Hello, {{ $user }}
@endif
  • Looping:
@foreach ($items as $item)
    {{ $item }}
@endforeach
Routing, Controller, dan View (Blade Template)

Layout dengan @extends dan @section

  • Membuat layout utama:
<!-- layouts/app.blade.php -->
<html>
<head><title>@yield('title')</title></head>
<body>@yield('content')</body>
</html>
  • Template child:
@extends('layouts.app')
@section('title', 'Home Page')
@section('content')
<p>Welcome!</p>
@endsection
Routing, Controller, dan View (Blade Template)

Include & Components

  • @include('partials.header')
  • Membuat komponen sederhana:
<x-alert type="error" message="Terjadi kesalahan!" />
Routing, Controller, dan View (Blade Template)

Passing Data dari Controller ke View

  • Di Controller:
public function index() {
    $products = Product::all();
    return view('products.index', ['products' => $products]);
}
  • Di Blade:
@foreach ($products as $product)
    {{ $product->name }}
@endforeach