Sunday, May 13, 2007

siteMANAGER : PHP framework for php 4 - Introduction of smart form

Dari semua framework yang bertebaran di internet, hatiku telah jatuh pada siteManager, makin lama ketergantungan dengan framework ini makin menggila ...... sayangnya framework ini untuk php4, untuk bisa jalan di atas php5 ... harus ngoprekkkk jauhh .... cape deyyyyy

Kenapa aku butuh framework , bukan kah framework bikin lebih lambat? benar aplikasi dari native coding jauh lebih cepat ketimbang menggunakan framework, tapi lihat dulu skala nya ... dan kepentingannya ...

Untuk skala proyek medium yang melibatkan lebih dari 2 programmer, saya jamin menggunakan framework itu recomended. Biasanya style coding masing masing programmer itu khan berbeda beda, nah framework ini setidaknya bisa membuat semacam standar coding, yang di sepakati. Sehingga jika kelak harus gonta ganti programmer ,it's easy .... maintenance pun jadi lebih mudah, walaupun tidak semudah java ya ... hehhe

siteManager itu terdiri dari :
  1. module system
  2. template system
  3. dan code plates
MODULE SYSTEM
Module adalah inti dari siteManager, module berisi fungsi fungsi , berisi proses, module di siteManager memiliki extension.mod, module merupakan class, dan nama class nya harus sama dengan nama file nya, kayak java gitu ... halah ....
Module bisa menggunakan module lain,bisa menggunakan library lain, module yang sudah disediakan siteManager adalah member system, login system, smart grid, smart form, nanti akan kita coba praktek kan. Keistemewaan dari siteManager adalah pada smartGrid dan smartForm nya ... cun abis ,keren

TEMPLATE SYSTEM
ini mah sama dengan sistem templating lainnya, hanya saja pada siteManager templatenya tidak menyediakan blog untuk perulangan.

CODEPLATE
hampir sama dengan template cuman lebih smart, kita bisa menggabungkan module, template, sub template, sub dari sub template

Tiga itu inti dari siteManager, sedangkan library lainnya seperti session management(menggunakan database atau file), Koneksi DATABASE(bisa memilih lebih dari satu database ) dan lain lain juga sudah ada ...... dan tinggal gunakan

siteManager bisa di dowmload pada situs : www.roadsend.com

Cara instalasi dan contoh penggunaan siteManager
1. Download dulu siteManager nya
2. Setelah itu untuk konfigurasi pada siteManager ada 2 file yang akan kita config :
  • localConfig.xsm
ada beberapa yang harus di setting pada localConfig.xsm:
setting direktori modules, lib dan templates
setting koneksi database,kita bisa memiliki lebih dari satu koneksi
setting session management,kita bisa menentukan meggunakan file atau database,keunggulan jika make database adalah ,kita bisa menyimpan apapun termasuk object ke dalam session

  • globalConfig.xsm
Yang paling penting kita setting di sini adalah variabel ini : smRoot, yang menyatakan absolute path dari direktori siteManager
  • common.inc
Pada common.inc ini yang paling penting itu kita letakkan di sini adalah :

require(dirname(__FILE__)."/../siteManager/siteManager.inc");
$adminDir = dirname(__FILE__).'/';
$SM_siteManager->loadSite($adminDir.'config/localConfig.xsm');
$SM_siteManager->dbConnect();
// use sessions
$SM_siteManager->startSessions();
//load member info
//$SM_siteManager->sessionH->flushMemberInfo();
$memberInfo = $SM_siteManager->sessionH->getMemberData();

Buat Module Member Login
testing membuat module login system dengan menggunakan library memberSystem yang ada pada siteManager, dan menggunakan smartForm :

$loginForm =& $this->newSmartForm();
$loginForm->addDirective('postScript',$_SERVER['REQUEST_URI']);
$loginForm->addDirective('requiredBadMsg','Masih kosong,isi dulu');
$loginForm->addDirective('showRequiredHelp',true);
$loginForm->loadTemplate("loginForm");

$un =& $loginForm->add('userName','','text',true);
$un->configure(array('size'=>'15','maxLength'=>'10'));

$pw =& $loginForm->add('passWord','','text',true);
$pw->configure(array('size'=>'15','maxLength'=>'10','passWord'=>true));

$loginForm->add("submitButton","","submit");
$loginForm->setArgs('submitButton',array('value'=>' Login '));

// run the form
$loginForm->runForm();

// was data verified?
if ($loginForm->dataVerified()) {
$passMd5 = md5($loginForm->getVar('passWord'));
$user = $loginForm->getVar('userName');
// attempt to login
if ($this->sessionH->attemptLogin($user,$passMd5)) {
// they logged in succesfully
} else {
// unsuccessful login
}
} else {
$this->say($loginForm->output());
}

Gimana dengan smartForm di atas ... gak kelihatan jagoannya ya .... nah sekarang bikin modul registrasi masih dengan smartForm .... biasanya kalo pada registrasi form itu yang perlu di lakukan adalah pengecekan keunikan dari username, terus penulisan alamat email yang benar, pembatasan username, mengambil record dari database ... hal itu cukup mudah menggunakan smartForm

Untuk pengecekan field yang tidak boleh kosong cukup begini
$newForm->add('userName','Username','text',true,'',array('size'=>'15','maxLength'=>'20'));

untuk membatasi karakter yang boleh masuk cukup kasih ereg seperti ini
$newForm->addFilter('userName','preg','Username antara 3 sampai 20 karakter',array('pattern'=>"/^\w{".$this->directive['minUserNameLen'].",".$this->directive['maxUserNameLen']."}\$/"));

untuk pengecekan keunikan di database kita bisa tambahkan filter seperti ini
$newForm->addFilter('userName','dbUnique','Maaf, Username sudah terdaftar',array('tableName'=>$this->directive['tableUser'],'checkField'=>$this->directive['userLoginField']));

Untuk pengecekan email misalnya ..... cukup begini :
$newForm->addFilter('email','email','Alamat email tidak benar');

Dan masih banyak lagi fungsi filter lainnya ... dan kita pun bisa bikin sendiri liberary untuk filter ...
Form tersebut jika isian tidak sesuai dengan filter nya maka akan memunculkan informasi yang sesuai dengan pesan error yang kita tuliskan juga pada filter itu seperti : maaf username sudah terdaftar ...., simple ,fast !!!

Oh ya kurang nih gimana cara menampilkan data dari database ke dalam select box , begini doang

$kota =& $newForm->add('{nama field}','{caption}','dbSelect',false);
$kota->configure(array( 'dataBaseID' => {koneksi id database},
'tableName' => {nama tabel},
'whereClause' => {nama tabel},
'dataField' => {field primary key},
'viewField' => {kolom yang ingin di tampilkan},
'orderBy' => {order by}));

Yeahhhhhhhhhhhhhhhhh .... smartForm ...........so how about smartGRID...... ntar lagi ahhhh

No comments: