Site icon agussuratna.net

Tutorial Laravel #3 : Membuat Controller

Controller Pada Laravel

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.

Controller merupakan jembatan atau penghubung antara view dan model, controller bisa kita pahami sebagai pengatur view dan model, controller sendiri biasanya berperan sebagai pengolah data.

Mungkin di beberapa contoh kasus, kita memerlukan penerapan logika atau pengolahan data, maka controller lah yang berperan, baru kemudian di tampilkan ke bagian view (user interface) aplikasi atau project kita. Controller laravel berada di dalam folder app/Http/Controllers/.

Untuk mempelajari lebih mendalam tentang controller laravel bisa membaca dokumentasi tentang laravel di https://laravel.com/docs/5.7/controllers .

Cara Membuat Controller pada Laravel

Ada 2 cara membuat controller pada laravel, yang pertama kita bisa membuat controller laravel dengan cara membuat langsung file controller baru nya dalam folder app/Http/Controllers/ dan cara yang kedua kita bisa menggunakan perintah php artisan dari laravel.

Cara Pertama

Cara yang pertama, yaitu membuat controller laravel dengan membuat langsung file controller barunya dalam folder controllers, di sini kita akan mengikuti format penulisan di laravel, jadi kita akan membuat nama controller nya dengan huruf besar (kapital) di awal setiap kata nama controllernya.

Misalnya di sini kita akan membuat controller guru, buat file baru dengan nama GuruController.php dalam folder controllers dengan sintak seperti berikut ini :

latihan_laravel/app/Http/Controllers/GuruController.php

<?php 
    namespace App\Http\Controllers; 
    use Illuminate\Http\Request; 
    
    class GuruController extends Controller 
    { 
        //di sini isi controller guru 
    }

Perhatikan syntax di atas, pada syntax di atas kita mendeklarasikan class controller GuruController, dengan wajib meng-extends Controller dari laravel, dan perhatikan penulisan classnya, kita wajib menulisakan nama file controller guru dengan benar.

Cara Kedua

Cara kedua untuk membuat controller pada laravel ialah kita bisa membuat controller laravel dengan mudah menggunakan php artisan. Php artisan merupakan salah satu fitur keren dari laravel, kita bisa membuat dan mengontrol project kita dengan bantuan php artisan.

php artisan adalah fitur unggulan yang ada pada laravel, yang dibuat untuk memudahkan kita dalam pengembangan menggunakan laravel.

Ada banyak sekali yang bisa kita lakukan dengan php artisan, coba ketik php artisan pada terminal, maka akan tampil perintah-perintah yang tersedia di php artisan. Salah satunya kita bisa membuat controller secara otomatis menggunakan perintah php artisan.

Sekarang kita akan mencoba membuat controller baru lagi dengan menggunakan perintah php artisan, kita akan membuat controller dengan nama SiswaController.php.

Pertama buka dulu terminal atau command prompt (CMD), selanjuitnya masuk ke direktori project laravel kita. Pada tutorial sebelumnya kita telah membuat project laravel dalam folder htdocs dengan nama latihan_laravel.

Setelah masuk ke direktori projeck latihan_laravel, kemudian ketik :

php artisan make:controller SiswaController

Perintah make:controller di atas adalah perintah php artisan untuk membuat controller, dan SiswaController adalah nama controller yang ingin kita buat.

Maka controller SiswaController.php akan dibuat secara otomatis.

Cara Menggunakan Controller Laravel

Di contoh ini kita akan membuat contoh penggunaan controller sederhana, dengan cara memanggil controller dari route.

Sekarang kita coba buka file web.php nya lagi yang terletak dalam folder routes, kita buat route baru lagi untuk mencoba mengakses atau memanggil controller dari route dengan perintah seperti berikut ini :

belajar_laravel/routes/web.php

Route::get('siswa', 'SiswaController@index');

Sintak route di atas maksudnya adalah, pada saat url “siswa” di akses, maka kita memerintahkan untuk menjalankan method/function index yang ada dalam controller SiswaController.

Karena controller SiswaController masih kosong, maka kita bikin method atau function index dalam controller SiswaController.

Buka file controller SiswaController.php , sehingga keseluruhan isi file SiswaController.php akan menjadi :

<?php

    namespace App\Http\Controllers;
    use Illuminate\Http\Request;
    
    class SiswaController extends Controller
    {
        public function index()
        {
            return "Halo ini adalah method index, dalam controller SiswaController";
        }
    }

Seperti yang sudah kita tetapkan pada Route Siswa, pada saat route siswa di akses, maka yang dijalankan adalah method/function index yang ada dalam controller SiswaController.php. Pada saat dijalankan pada web browser untuk melihat hasilnya dengan cara mengakses alamat http://localhost:8000/siswa atau http://localhost/latihan_laravel/siswa.

 

Error ‘Target class controller does not exist’ di Laravel 8

Sebelum mengakses alamat http://localhost:8000/siswa atau http://localhost/latihan_laravel/siswa, kita harus edit satu file yang ada di laravel. Hal ini karena ada pembaharuan di laravel 8 dalam mendefinisikan rute, seperti yang tertulis di dokumentasi rilis laravel 8 mengenai Routing Namespace Update. Bahwa pada versi ini cara penulisan menggunakan sintaks callable PHP, meskipun tetap bisa menggunakan cara seperti versi sebelumnya.

Yang membedakan dari versi sebelumnya dan bagaimana kita bisa mendefisinikan route seperti yang kita lakukan di versi sebelumnya yaitu di laravel 8 tidak mendefinisikan namespace route ke controller secara otomatis. Oleh karena itu kita mendapati kesalah atau error seperti Target class [xxxcontroller] does not exist.

 

Cara Mengatasi

Sekarang mari kita lihat bagaimana cara mengatasi error tersebut. Ada beberapa cara yang bisa kita terapkan. Silahkan buka file RouteServiceProvider.php yang ada dalam folder C:\xampp\htdocs\latihan_laravel\app\Providers\RouteServiceProvider.php dan tambahkan properti $namespace seperti dibawah ini :

protected $namespace = 'App\\Http\\Controllers';

 

Setelah file tersebut diedit, kita bisa akses http://localhost:8000/siswa atau http://localhost/latihan_laravel/siswa. Sesuai dengan yang kita buat dalam function index dalam controller SiswaController, kita me-return string “halo ini adalah method index, dalam controller SiswaController”, maka tampilannya akan seperti berikut ini :

 

Exit mobile version