Thursday, April 29, 2010

Joomla Flashdata

Artikel ini gw tulis berhubung sdg giat2 nya
menggunakan Joomla utk bbrp project gw.
Begini, ktika menggunakan CI gw dapetin fitur
yg amat sangat membantu, Flashdata.

Nah pas googling... kok tak kunjung dapet tuh
yg berkaitan dg Flashdata. Buntut2 nya gw liat2
isinya flashdata di CI, trus gw tulis sendiri
utk Joomla. Langsung aja.
/* buat dir baru di path ini flashdata/ */
/joomla/libraries/flashdata/

/* tambahkan flashdata.php */
class Flashdata {

public $flashdata_key = 'flash_';
public $userdata = array();

function __construct(){


}

function set_flashdata($newdata = array(), $newval = '')
{
if (is_string($newdata))
{
$newdata = array($newdata => $newval);
}

if (count($newdata) > 0)
{
foreach ($newdata as $key => $val)
{
$flashdata_key = $this->flashdata_key.$key;
$this->set_userdata($flashdata_key, $val);
}
}
}

function set_userdata($newdata = array(), $newval = '')
{
if (is_string($newdata))
{
$newdata = array($newdata => $newval);
}

if (count($newdata) > 0)
{
foreach ($newdata as $key => $val)
{
$this->userdata[$key] = $val;
}
}

$_SESSION['user_flashdata'] = serialize($this->userdata);
}

function flashdata($key)
{
$flashdata_key = $this->flashdata_key.$key;

$temp = unserialize($_SESSION['user_flashdata']);

$value = $temp[$flashdata_key];

unset($temp[$flashdata_key]);

return $value;
}
}

Cara penggunaan:
tambah kan external link melalui administrator GUI dari joomla
utk dapat masuk ke component anda.

Di dalam component
/* /joomla/components/com_komponenku/komponenku.html.php */
class Komponenku_HTML{

function execute($task){

switch($task){
...
default:

$flashdata_ku = JFlashdata::flashdata('test');

if(!empty($flashdata_ku)){

echo $flashdata_ku;
}else{

JFlashdata::set_flashdata('test','Pesan ku');
header('location : '.JURI::root().'index.php?option=com_komponenku');
}
}
}
}
Nah utk class Flashdata masih jauh dari yg CI.
Tapi dg contoh yg di atas dan gw pribadi gunakan,
sudah memberikan suatu kepuasan. Karena sekali lagi
fitur ini sangat membantu.

Coding for life, coding with ethic.

No comments: