RequestAction didalam CakePHP


Pada saat koding, muncul suatu kebutuhan bagaimana caranya memanggil suatu fungsi didalam views??? Fungsi tersebut ada 2 letaknya, bisa terdapat di controller atau bisa juga di model. Karena CakePHP menerapkan konsep MVC secara strict, maka pemanggilan fungsi model didalam view tidak perbolehkan. Jadi pilihannya cuma tinggal satu, memanggil fungsi yang terdapat didalam controller dengan menggunakan konsep requestAction. Didalam fungsi tersebut, baru kita letakkan script yang kita butuhkan. Karena menggunakan requestAction nantinya akan berhubungan juga dengan penggunaan element.

Skenarionya adalah sebagai berikut : saya memiliki satu buah table dengan beberapa kolom dimana kolom2 tersebut ada yang tidak memenuhi konvensi cakephp, yaitu field id_approval. id_approval merupakan Fkey dari table Employees (id, name, …). Pada saat didalam view, saya mendapatkan value dari id_approval dan misalnya value tersebut saya berikan nama $id_approval. Sekarang masalahnya adalah, bagaimana menampilkan nama dari Employees?? Cara yang saya pakai yaitu menggunakan konsep requestAction dan Elements. Step by stepnya sebagai berikut :

Didalam EmployeesController saya membuat 1 buah fungsi yaitu getbyid() function getbyid($id=””){
$this->Employee->id = $id;
$dtpeg = $this->Employee->read();
return $dtpeg;
}
Membuat 1 buah element dengan nama el_employee_name.ctp dan simpan di …app\views\elements <?php
$dtpeg = $this->requestAction(‘/employees/getbyid/’.$data);
echo $dtpeg[‘Employee’][‘name’];
?>

*didalam requestAction kita masukkan url action yang terdapat didalam controller. $data merupakan parameter yang akan dilewatkan kedalam fungsi getbyid().

Kemudian didalam views, tinggal kita panggil element nya lengkap dengan parameter value $id_approval. echo $this->element(‘el_employee_name’,array(‘data’=>$id_approval));

*Didalam elemen, kita masukan nama elemen beserta data yang akan dilempar. ‘data’ merupakan nama parameter yang akan di masukkan kedalam requestAction.

Dengan cara yang telah dijabarkan diatas, kita bisa memanggil suatu fungsi yang terletak didalam controller. Cukup rumit memang kalau dibandingkan dengan CodeIgniter. Mungkin cara ini bukan yang paling baik, tapi kalau ada yang punya ide yang lebih simple dalam memanggil fungsi didalam views, please let me know😀.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s