Belajar Laravel (Chapter 4 | Kupas Tuntas Controllers)

Tobi Ahmad
dotlocal
Published in
3 min readApr 5, 2020

Dalam kerangka MVC, huruf C merupakah singkatan dari Controller. Fungsinya untuk penulisan logic atau perantara lalu lintas antara Request, View, dan Model. Controller ini disimpan dalam folder app/Http/Controllers.

Scope of This Chapter

Pada chapter ini, kita akan mempelajari controller Pada Laravel.

Dasar Controllers

Berikut ini contoh penulisan class controller. Controller merupakan sebuah class yang meng extend base controller class yang sudah disediakan oleh Laravel. Pada extend controller kita bisa mendaftarkan sebuah global middleware dan lainnya.

app/Http/Controllers/Controller.php

<?phpnamespace App\Http\Controllers;use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}

Ketika kita membuat sebuah class controller PostController maka kita extends class Controller

<?phpnamespace App\Http\Controllers;use App\Http\Controllers\Controller;
use App\Post;
class PostController extends Controller
{
/**
* Menampilkan detail post.
*
* @param int $id
* @return View
*/
public function show($id)
{
return view(‘post.detail’, [‘post’ => Post::findOrFail($id)]);
}
}

Pasa class PostController terdapat action show yang digunakan untuk menulis logic atau pengambilan data dari database dan mengirimnya ke view.

Kita bisa menambahkan kode berikut pada routes/web.php untuk controller action seperti ini :

Route::get(‘post/{id}’, ‘PostController@show’);

Sekarang kita kita mengakses url seperti http://laravel.local/post/5, maka method show pada class PostController akan dieksekusi. Route parameter akan dimasukan ke sebuah method.

Membuat Controller

Kita bisa membuat controller melalui Artisan CLI (Command Line Interface) dengan membukan terminal dan tulis perintah berikut ini:

php artisan make:controller <nama-controller>

Ganti <nama-controller> dengan nama Controller yang akan dibuat, misalnya kita akan menamppilkan data berita bisa menggunakan PostController atau NewsController. Controller yang dibuat bisa kita definisikan di route dengan menulis syntax berikut ini :

buka file routes/web.php

Route::get(‘URI’, ’controller@method’);

Contoh

1 — Jalankan perintah berikut untuk membuat PostController

php artisan make:controller PostController

2 — Maka kita bisa melihat output berikut:

3 — Kita bisa melihat controller yang dibuat di App/Http/Controller/PostController.php dengan beberapa koding dasar yang telah dibuatkan oleh Laravel. Kita bisa menambahkan method yang dibutuhkan, seperti kita tambah method index pada controller PostController.php dengan isian sebagai berikut:

<?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;class PostController extends Controller
{
public function index()
{
return "Halaman utama";
}
}

4 — Pada file route di routes/web.php tambahkan koding berikut:

Route::get(‘/posts’, ‘PostController@index’);

5 — Jalankan perintah php artisan serve pada terminal lalu akses url http://127.0.0.1:8000/posts pada browser.

Namespace

Pada App\Providers\RouteServiceProvider.php terdapat penulisan namespace

/**
* This namespace is applied to your controller routes.
*
* In addition, it is set as the URL generator’s root namespace.
*
* @var string
*/
protected $namespace = ‘App\Http\Controllers’;

Fungsinya untuk menentukan namespace routing dengan value ‘App\Http\Controllers’ agar penulisan koding URI dan nama controller di route lebih singkat.

Jika kita membuat sebuah folder baru pada App\Http\Controller, misalnya App\Http\Controllers\Admin, maka class controller di tulis seperti ini.

<?phpnamespace App\Http\Controllers\Admin;use App\Http\Controllers\Controller;
use App\Post;
class PostController extends Controller
{

}

Jadi jika class controller dibuat App\Http\Controllers\Admin\ PostController, maka penulisan pada routes/web.php seperti.

Route::get(‘admin/post’, ‘Admin\PostController@method’);

Controller Middleware

Middleware pada Route

Edit routes/web.php, tambahkan ->middleware(‘auth’)

Route::get(‘posts’, ‘PostController@index’)->middleware(‘auth’);

Koding tersebut menambahkan middleware auth ke PostController di route /posts.

Middleware pada Controller’s constructor

<?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;class PostController extends Controller
{
public function __construct() {
$this->middleware('auth');
}
public function index()
{
return "Halaman utama";
}
}

Koding ini akan menambahkan middleware auth dengan menggunakan method middleware() pada constructor PostController.

Next Chapter

https://medium.com/dotlocal/belajar-laravel-chapter-5-tutorial-database-39bc9e3ccac

Support the Author

Jika suka dengan artikel ini, bisa support saya dilink berikut ya https://karyakarsa.com/tobidsn :)

Cheers
Tobi Ahmad
Founder of Dot Local

--

--

Tobi Ahmad
dotlocal

Web Developer, Blogger, & Open source enthusiast.