Laravel - Controller & Configuration
Controller
Laravel Controller merupakan
salah satu bagian dimana seluruh fungsional web dibuat. Pada Controller
dilakukan pengaturan untuk mengakses Model terkait dengan Database dan juga
bagaimana mengirimkan datanya ke View. Berbagai pemrosesan juga dilakukan di
dalam Controller.
Controller adalah salah satu
komponen inti dari MVC yang berfungsi sebagai penghubung antara request user
(View) ke model yang nantinya akan di kembalikan lagi ke View dalam bentuk
response. Controller ini akan banyak berisi logika – logika dalam menyusun
suatu fungsi tertentu. Contohnya adalah aktivitas CRUD (Create, Read, Update,
Delete) yang prosesnya berjalan di dalam Controller.
Membuat Controller dapat
dilakukan dengan menggunakan perintah PHP Artisan yang disediakan Laravel atau
dengan membuat secara manual di dalam folder app/Http/Controllers. Berikut
adalah perintah PHP Artisan untuk membuat sebuah Controller melalui bash:
php artisan make:controller HomeController
Bash diatas akan membuat file app/Http/Controllers/HomeController.php
<?php
{
//
}
Setelah itu kita tambahkan route untuk mengarahkan kepada
controller yang akan digunakan
Route::get('/', [HomeController::class, 'index'])->name('home.index');
Route::get('/contact', [HomeController::class, 'contact'])->name('home.contact');
Setelah itu kita cek dengan menggunakan
php artisan route:list
Single Action Controller
Pertama kita akan membuat controller baru dengan nama
AboutController dengan cara menjalankan
php artisan make:controller AboutController
dari bash diatas tergenerate file app/Http/Controllers/AboutController.php.
Buka file tersebut dan edit menjadi seperti ini
<?php
{
public function __invoke()
{
return view('about.index');
}
}
Buat file view resources/views/home/about.blade.php
@extends('layouts.app')
@section('title', 'About')
section('content')
<p>This is my About content.</p>
@endsection
Route::get('/about', AboutController::class)->name('about.index');
Rest Controller
Rest controller adalah salah best practice untuk membuat
Create, Read, Update, Delete (CRUD) action
Diagram diatas adalah best practice untuk membuat CRUD
action anda yang perlu anda perhatikan:
A.
Resource/Noun → Posts
B.
Controller name → PostsController
C.
Gunakan http verb yang sesuai dengan action nya,
misalkan GET untuk read data, POST untuk create, PUT/PATCH untuk update dan
DELETE untuk delete.
D.
Untuk rest akan memiliki 7 action, silahkan
lihat kotak yang berwarna putih
Untuk membuat rest controller ini kita cukup jalankan bash
php artisan make:controller PostsController --resource
Command
tersebut akan membuat file app/Http/Controllers/PostsController.php, kemudian
buka file tersebut. Secara otomatis file controller tersebut terdiri dari 7
action (function)
a.
public function index() → untuk halaman list
post
b.
public function create() → untuk halaman form
create post
c.
public function store(Request $request) → untuk
action form create post
d.
public function show($id) → untuk halaman single
post
e.
public function edit($id) → untuk halaman form
edit post
f.
public function update(Request $request, $id) →
untuk action form edit postpublic function destroy($id) → untuk delete post
Kemudian tambahkan pada route nya
untuk menambahkan endpoint nya
Route::resource('posts', PostsController::class);
Lalu setelah di cek maka akan muncul seperti gambar di bawah,
mengeceknya dengan menjalankan
Routing resource juga memiliki beberapa option function only
dan except
Route::resource('posts', PostsController::class)->only(['index', 'show']);
Route::resource('posts', PostsController::class)->except(['index', 'show']);
Move logic /posts and
/posts/{id} from route to controller
Kita akan memindahkan logic pada path /posts and /posts/{id}
ke controller. Code kita sebelumnya sudah bisa menampilkan halaman /posts and
/posts/{id}.
Tambahkan sintak pada app/Http/Controllers/PostsController.php
tambahkan private variable
lalu juga tambahkan sintak seperti di bawah ini pada fungsi index
public function index()
{
return view('posts.index', ['posts'=> $this->posts]);
}
@extends('layouts.app')
@section('title', 'Posts')
@section('content')
@foreach ($posts as $post)
<p>
<h3> {{ $post['title'] }}</h3>
This is user {{ $post['content'] }}
@if ($post['is_new'])
<b>(new)</b>
@endif
</p>
<br>
@endforeach
@endsection
Lalu setelah itu tambahkan sintak ini pada fungsi shos untuk
file PostsController
public function show($id)
{
$post = $this->posts[$id];
return view('posts.show', ['post'=> $post]);
}
Lalu buat juga file resources/views/posts/show.blade.php
@extends('layouts.app')
@section('title', 'Posts')
@section('content')
<p>
<h3> {{ $post['title'] }}</h3>
This is user {{ $post['content'] }}
@if ($post['is_new'])
<b>(new)</b>
@endif
</p>
@endsection
Configuration
Semua file konfigurasi untuk framework Laravel disimpan di
configdirektori. Setiap opsi didokumentasikan, jadi silakan melihat-lihat file
dan membiasakan diri dengan opsi yang tersedia.
Diagram dibawah ini adalah flow bagaimana laravel menggunakan env variable untuk database configuration
Contoh file .env di laravel