Controller,ENV dan DB Config
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
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HomeController extends Controller
{
//
}
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
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class AboutController extends Controller
{
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
Lalu tambahkan juga pada routes/web.php
Route::get('/about', AboutController::class)->name('about.index');
Lalu Buka pada browser
Rest Controller
Diagram diatas adalah best practice untuk membuat CRUD action anda yang perlu anda perhatikan:
A. Resource/Noun → Post
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
Php artisan route:list
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
Tambahkan sintak seperti di bawah ini pada fungsi index
public function index()
{
return view('posts.index', ['posts'=> $this->posts]);
}
Lalu buat juga file resources/views/posts/index.blade.php
@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 buka pada browser
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
Lalu buka pada browser
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.
Seringkali membantu untuk memiliki nilai konfigurasi yang berbeda berdasarkan lingkungan tempat aplikasi berjalan. Misalnya, mungkin ingin menggunakan driver cache yang berbeda secara lokal daripada yang lakukan di server produksi. Untuk membuatnya mudah, Laravel menggunakan pustaka PHP DotEnv . Dalam instalasi Laravel baru, direktori root aplikasi akan berisi .env.examplefile yang mendefinisikan banyak variabel lingkungan umum. Selama proses instalasi Laravel, file ini secara otomatis akan disalin ke .env.
.env File default Laravel berisi beberapa nilai konfigurasi umum yang mungkin berbeda berdasarkan apakah aplikasi berjalan secara lokal atau di server web produksi. Nilai-nilai ini kemudian diambil dari berbagai file konfigurasi Laravel di dalam configdirektori menggunakan envfungsi Laravel .
Diagram dibawah ini adalah flow bagaimana laravel menggunakan env variable untuk database configuration
Contoh file .env di laravel
Comments
Post a Comment