<?php
/**
* User controller
*
*/
class Controller_User extends Controller {
public function action_hello() {
echo 'Hello Stranger!';
}
}
/* APPPATH/classes/controller/user.php */
/**
* User controller
*
*/
class Controller_User extends Controller {
public function action_hello() {
echo 'Hello Stranger!';
}
}
/* APPPATH/classes/controller/user.php */
Silakan akses dari browser dengan URL localhost/public/user/hello (berikutnya cukup disebut user/hello). Apabila tidak ada masalah, browser akan menampilkan teks "Hello Stranger!".
Nah, kita inginnya kata "Stranger" pada skrip di atas dibuat dinamis sesuai dengan inputan. Inputan disini tidak harus selalu melalui form, contoh lain misalnya dengan mengambil parameter dari URL.
http://www.domain.com/controller/action/param_1/param_2/param_3/param_n
FuelPHP mendukung input dari URL (bukan request GET), dengan aturan baku dimana segmen pertama merupakan nama class, sedangkan segmen kedua adalah nama method, maka segmen ketiga dan seterusnya adalah parameter input. Contoh URL dengan melempar parameter melalui URL: http://localhost/fuel1/public/user/hello/lely atau http://localhost/fuel1/public/user/hello/lala.
Hal selanjutnya adalah menangkap paramater tersebut dari controller, atau lebih spesifiknya menangkap parameter tersebut melalui method action_hello seperti contoh skrip di atas.
<?php
/**
* User controller
*
*/
class Controller_User extends Controller {
public function action_hello($name) {
echo 'Hello '.$name.'!';
}
}
/* APPPATH/classes/controller/user.php */
/**
* User controller
*
*/
class Controller_User extends Controller {
public function action_hello($name) {
echo 'Hello '.$name.'!';
}
}
/* APPPATH/classes/controller/user.php */
Cobalah mengkases URL user/hello/lely, dan lihat hasilnya. Beutiful! Browser akan menampilkan teks "Hello lely!".
Nah, sekarang cobalah akses URL tanpa menyertakan paramater, contoh: user/hello, dan lihat apa yang terjadi? Bloody Hell! FuelPHP mengembalikan respon 404 hanya karena kita tidak menyertakan parameter.
Pesan kesalahan tersebut menjelaskan bahwa sebenarnya tidak ada nilai default untuk argumen pada sebuah method yang kita buat. Namun, sudah dimodifikasi oleh core FuelPHP sehingga respon yang ditampilkan langsung merujuk ke 404. Solusinya? Cukup tambahkan nilai default seperti contoh skrip di bawah.
public
function
action_hello(
$name
= null) {
$name
=
empty
(
$name
) ?
'Stranger'
:
$name
;
echo
'Hello '
.
$name
;
}
Jumlah parameter yang dilempar melalui URL tidak terbatas, kita bisa menambahkan sebanyak yang kita mau, misal URL user/hello/lely/Solo. Langkah selanjutnya tinggal memprosesnya pada method, tidak diprosespun tidak apa-apa.
public
function
action_hello(
$name
= null,
$from
= null) {
$name
=
empty
(
$name
) ?
'Stranger'
:
$name
;
$from
=
empty
(
$from
) ?
'World'
:
$from
;
echo
'Hello '
.
$name
.
', From '
.
$from
;
}
Ada sedikit masalah yang mengganjal, bagaimana jika paramater yang diinputkan tidak tentu jumlahnya? Bagaimana menentukan nilai defaultnya? Untuk kasus ini, kita bisa memanfaatkan librari Uri bawaan FuelPHP. Ada dua method yang dapat kita manfaatkan yaitu segment dan segments.
/**
* Sample URL : domain.com/user/hello/stranger/who/are/you
*/
public
function
action_hello() {
echo
Uri::segment(1);
// user
echo
Uri::segment(3);
// stranger
// dengan melempar default value
echo
Uri::segment(100,
'I\'m not exist!'
)
// I'm not exist
// mendapatkan semua indeks dan nilai paramater dalam bentuk array
var_dump(Input::segments());
// // returns array(0 => 'user', 1 => 'hello', ...)
}
Mungkin sebagian dari kita bertanya-tanya, apa manfaatnya? Bagaimana implementasinya? Contoh kasus nyata penggunaan parameter tersebut ada pada website ini. Silakan lihat URL di atas, terdapat parameter melempar-parameter-dari-url-ke-controller bukan? parameter ini digunakan controller untuk melakukan pencarian artikel ke dalam basisdata, kemudian artikel tersebut ditampilkan ke browser. Memang tidak sesederhana itu prosesnya, tapi paling tidak kita dapat gambaran langsung guna dari parameter tersebut. ;)
SRC : http://www.fuelphp.yugo.my.id/post/tutorial/melempar-parameter-dari-url-ke-controller
Tidak ada komentar:
Posting Komentar