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

 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

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

 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

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

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

lalu juga 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

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

 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. File konfigurasi ini memungkinkan mengonfigurasi hal-hal seperti informasi koneksi database, informasi server email , serta berbagai nilai konfigurasi inti lainnya seperti zona waktu aplikasi dan kunci enkripsi.

 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 .

 Jika mengembangkan dengan tim,  mungkin ingin terus menyertakan .env.examplefile dengan aplikasi . Dengan meletakkan nilai placeholder di file konfigurasi contoh, developer lain di tim dapat melihat dengan jelas variabel lingkungan mana yang diperlukan untuk menjalankan aplikasi .

 Diagram dibawah ini adalah flow bagaimana laravel menggunakan env variable untuk database configuration



 Contoh file konfigurasi laravel



Contoh file .env di laravel

Sekian Artikel mengenai Laravel, mohon maaf apabila banyak sekali kekurangan

Terima kasih


 

Next Post Previous Post
No Comment
Add Comment
comment url