Route Pada Laravel

laravel route::resource, laravel route function with parameter, laravel route middleware, laravel route wildcard, laravel route model binding

Route Pada Laravel

Seluruh route aplikasi didefinisikan di dalam folder
routes. File-file yang ada didalamnya secara otomatis dimuat oleh Laravel. Adapun file yang penting sebagai berikut :

Nama File
Keterangan
web.php
Pada file ini didefinisikan route-route untuk antarmuka berbasis web, yang ditempatkan pada grup middleware web yang tersedia fitur seperti session dan CSRF (cross site request forgery)
api.php
Pada file ini didefinisikan route-route yang stateless dan ditempatkan pada grup middleware api
 

Konfigurasi lanjutan dari routes ini misalnya mengatur prefix atau opsi-opsi lainnya dilakukan pada file class RouteServiceProvide

Bentuk Dasar Route

Bentuk sederhana dari route hanya berisi URI (Uniform Resource Identifier) dan sebuah closure (fungsi yang tidak ada namanya), seperti berikut ini :

Route::get('/', function () {
    return 'Selamat Datang';
});

Buka file routes/web.php selanjutnya ketikan kode tersebut, selanjutnya buka web browser (chrome atau firefox) arahkan ke url http://localhost/[nama_projek]/public outputnya seperti pada gambar 1 berikut :

Route Dengan Controller 

untuk membuat route dengan controller masukan kode berikut pada routes/web.php sebagai berikut :

<?php
Route::get('/',['uses'=>'HomeController@index','as'=>'home.index']);
Route::get('/about',['uses'=>'HomeController@about','as'=>'home.about']);
Route::get('/help',['uses'=>'HomeController@about','as'=>'home.help']);
?>

Selanjutnya buat file HomeController.php  letakan di direktori app/Http/Controllers, Kemudian tulislah kode berikut :

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class HomeController extends Controller {
    public function index ()
    {
        return "ini Index";
    }
    public function about ()
    {
        return "ini about";
    }
    public function help ()
    {
        return "ini help";
    }
}
?>

selanjutnya buka web browser (chrome atau firefox), akses satu persatu URI-nya misalnya ke url http://localhost/[nama_project]/about outputnya seperti pada gambar 2 berikut :

Daftar Route

Laravel menyediakan perintah untuk menampilkan daftar route yang ada didalam aplikasi dengan menggunakan artisan, seperti berikut pada cmd
php artisan route:list 

 Method Route

 Laravel memiliki beberapa metod merespon request http sebagai berikut :
  1.  Route::get($uri, $callback);
  2.  Route::post($uri, $callback);
  3.  Route::put($uri, $callback);
  4.  Route::patch($uri, $callback);
  5.  Route::delete($uri, $callback);
  6.  Route::options($uri, $callback);
Kadang – kadang ada keperluan untuk menggabungkan beberapa atau semua metod tersebut dalam satu route, caranya dengan menggunakan perintah match atau any

Route::match(['get', 'post'], '/', function () {   
//
});

Route::any('foo', function () {
//
});


Route Group

Route Group digunakan untuk mengelompokan route-route menjadi satu tanpa mendefinisikan satu per satu dimasing-masing route, manfaatnya misalnya untuk membagi awalan atau prefix uri, middleware, atau namespace. Berikut adalah bentuk route group

Route::group(['prefix'=>'admin', middleware'=>['web'], function () {
   
});


Berikut adalah contoh penggunaan Route::group, dimana kodenya memodifikasi dari latihan sebelumnya.
 
<?php
Route::group(['prefix'=>'admin','middleware'=>['web']],function(){
    Route::get('/',['uses'=>'HomeController@index','as'=>'home.index']);
    Route::get('/about',['uses'=>'HomeController@about','as'=>'home.about']);
    Route::get('/help',['uses'=>'HomeController@help','as'=>'home.help']);
});

Saat mengaksesnya, maka url yang valid diawali dengan ‘admin’, seperti gambar 3 berikut ini

http://localhost/[nama_project]/public/admin/about 





Informasi Route

Gunakan metod current, currentRouteName dan currentRouteAction untuk memperoleh informasi mengenai request yang sedang ditangani.

$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();


Bila ingin mendapatkan informasi tambahan mengenai metod-metod yang route bisa digunakan silahkan baca dokumentasi API yang disediakan oleh Laravel di alamat url https://laravel.com/api/5.8/Illuminate/Routing/Route.html