autoload di yii

dear forum yiiers,

Bagaimana membuat autoload class / constructor di YII. Tujuannya adalah mengambil data yang sebelumnya sudah diload.

Ane ada kasus, ane mau buat report di YII dalam bentuk grafis dan excell dari grid yang sudah ditampilkan. Biar lebih efisien (komunikasi dengan database menjadi minimal), biasanya data yang diambil waktu menampilkan grid ane simpan dalam array dan di jadikan autoload.

Kalau di CodeIgniter kita bisa menggunakan function __construct() di controller. Ane coba implementasikan function __construct() di controller YII ga bisa jalan.

ada yang taukah dari temen2 milis bagaimana setting nilai dan load nilai yang bisa digunakan pada tiap controller?

makasih yii-ers.

pake method init()?

makasih mas masukannya… :) ane akan coba-coba dulu. Berarti fungsi init itu untuk autoload ya mas… dan bisa ambil nilai properti dari parent yang sudah di set valuenya oleh salah satu controller yang menampilkan grid.

:)

init itu semacam hook sih, dan lebih bersih karena method __construct di controller itu kadang sering dipake macam2 :P

di CController sendiri ada beberapa hook yang bisa dipake

beforeAction

afterAction

beforeRender

afterRender

Gan mau tanya cara penggunaannya nih.

misalnya :

NilaiContoller extends CController

{

public function actionAmbilDataMahasiswa() {

$model = new Mahasiswa;

if(isset($_POST[‘Mahasiswa’]))

{

$model->attributes=$_POST['Mahasiswa'];


$model->getNilaiMahasiswa($model->kelas);  //fungsi ini mendapatkan nama mahasiswa dan nilainya

}

$this->render(‘nilai_mahasiswa’,array(‘model’=>$model));

}

}

pertanyaannya, dimana dan bagaimana caranya agar saya bisa simpan data itu untuk dipanggil lagi ketika saya ingin membuat report? karena sebaiknya saya tidak perlu lagi melakukan query yang sama ke database. Jikalau data itu tersimpan (mungkin semacam autoload class atau menggunakan init())

makasih yii-ers.

masih gak ngerti maksudnya, dan kenapa gak mau query ke database?

kalo emang gak mau query terus2an hal yang sama ya bisa disimpan di session atau di cache…




NilaiController extends CController {

   private $_mahasiswa;


   public function init(){

      //load dari session atau cache

   }


   public function actionAmbilDataMahasiswa(){

      //bla bla bla

      //save ke session atau cache

      //

   }


   public function actionSebuahAksi(){

      if ($this->_mahasiswa != NULL){

          //do something

      }

   }




}



kayak gitu bukan sih?

iya gan, itu maksud ane, makasih untuk quick responnya…hahay. kayaknya mulai cerah

kalau ane ga mau query lagi, karena untuk meminimalkan koneksi ke database gan. Kalau kita ambil sekali, terus close koneksi. Dan data yang diambil itu kita simpan untuk di gunakan secara berulang2(salah satunya report) akan lebih bagus setau ane, daripada kita query lagi ke database setiap melakukan aksi. apalagi kalau usernya banyak… hehe (bisa mengurangi kinerja server database). Tapi kalau agan punya solusi lain, ane akan sangat senang. :)

Ya, salah satu tujuan penggunaan cache itu adalah untuk menyimpan data agar bisa data tersebut bisa diakses lebih cepat jika dibutuhkan kembali. Biasanya data yang dicache itu adalah data yang jumlahnya gak terlalu besar dan juga jarang berubah.

Biasanya yg sering dicache itu profil User (id, username, first name, last name)…

pola umumnya sih




if (in_cache($cacheid)){

   $var = get_from_cache($cacheid);

} else {

   $var = get_from_database();

   store_to_cache($var, $cacheid);

}



gitu2 aja sih,

http://www.yiiframework.com/doc/guide/1.1/en/caching.data