Digitalmapia adalah situs dimana semua orang bisa menulis artikelnya sendiri. Klik "Login/Register untuk masuk, lalu klik "Tulis Artikel" untuk mulai menulis.

Bekerja dengan routing pada Laravel

Router merupakan bagian yang sangat penting ketika berurusan dengan aplikasi terutama yang berbasis web. Router berfungsi menangani request aplikasi kemudian mengarahkan aplikasi untuk memanggil halaman/resouce tertentu.

Misalnya, jika anda memanggil URL : http://localhost/products kemungkinan besar anda ingin mengarahkan aplikasi ke sebuah controller bernama ProductController.php kan?

Nah, pada postingan kali ini saya akan mengajak anda mendalami sedikit lebih spesifik mengenai router pada Laravel, serta bagaimana cara mengimplementasikannya. Menurut saya, sistem router pada Laravel merupakan sistem router yang terbaik yang pernah saya gunakan selama mengenal framework PHP dan sangat memudahkan sekali bahkan ketika membuat routing yang cukup kompleks.

Mengenal routes pada Laravel

Routes pada Laravel terdapat pada file app/routes.php. Semua routes diletakkan pada file tersebut agar ketika anda ingin memodifikasinya, anda tahu persis dimana routes tersebut berada. Selain dengan membuka file tersebut, anda juga bisa melihat routes apa saja yang terdapat pada aplikasi anda dengan menggunakan perintah pada command line:

php artisan routes

Dengan perintah seperti diatas, seluruh routes yang ada pada aplikasi akan ditampilkan pada command line.

Routes dasar

Secara default, ketika anda instal Laravel sudah terdapat routes seperti berikut pada routes.php :

Route::get('/', function()
{
  return View::make('hello');
});

Seperti yang anda lihat, terdapat ‘/’ (slash) yang menandakan route tersebut menangani halaman utama dari aplikasi anda (halaman root). Selain itu, route diatas mengembalikan sebuah view dengan nama file app/views/hello.php. Method get pada contoh diatas adalah suatu method yang digunakan untuk menampilkan resource (bisa berupa fungsi atau controller);

Method get menerima dua parameter, sebuah path dan sebuah closure. Path tersebut adalah URL yang harus ditangani oleh method get tersebut. Sedangkan Closure adalah berupa anonymous function, anonymous function adalah sebuah fungsi yang tidak memiliki nama dan dapat dilewatkan kepada fungsi lain sebagai argument.

Route menggunakan method post

Selain method get, pada Laravel juga terdapat method post untuk menangani route. Method post, biasanya digunakan untuk mengarahkan form ketika di submit. Perhatikan contoh berikut:

Route::post('product/store', function()
{
  return Product::create(Input::all());
});

Route menggunakan method any

POST dan GET merupakan Http verbs. POST bisa ditangani dengan method post pada route, dan GET bisa ditangani dengan method get. Sekarang, bagaimana jika kita ingin membuat route yang bisa menangani keduanya? Jawabannya adalah menggunakan method any.

Route::any('hello', function()
{
  return 'Hello World';
});

Route menggunakan HTTPS

Jika anda menginginkan supaya request ditangani melalui Https, anda bisa menggunakan array pada saat melewatkan closure pada argument. Perhatikan contoh berikut:

Route::get('product', array('https', function()
{
  return 'Route menggunakan HTTPS';
}));

Menggunakan parameter pada route

Terkadang anda perlu melewatkan parameter pada URL, sebagai contoh untuk mengambil produk dengan id = 1, maka anda melewatkan parameter 1 pada URL ketika mengakses route product seperti ini : product/1. Untuk itu, anda perlu membuat route seperti berikut:

Route::get('product/{id}', function($id)
{
  return Product::find($id);
});

Pada contoh diatas, parameter tersebut wajib diisi. Artinya, anda tidak bisa mengakses route product, tetapi harus dengan parameter product/1code>. Nah supaya parameter tersebut bersifat opsional dan anda bisa mengakses route product tanpa parameter, anda perlu membubuhkan tanda tanya setelah nama parameter serta menambahkan default value pada parameter tersebut. Contoh:

Route::get('product/{id?}', function($id = NULL)
{
  if($id)
  {
    return Product::find($id);
  }
  return Product::all();
});

Mengarahkan route ke controller

Pada contoh diatas, route diarahkan kepada sebuah anonymous function yang ada pada method get, post atau any. Nah, untuk mengarahkan route ke controller lakukan dengan cara seperti berikut ini:

	Route::get('product/{id}', 'ProductController@showProfile');

Itulah sedikit mengenai cara menggunakan route pada Laravel. Untuk lebih lengkapnya, juga bisa melihatnya langsung pada dokumentasi Laravel 4. Semoga bermanfaat.

Laravel Wallpapper