fbpx

Tampilan Tanggal dan Penginputan Tanggal dalam Format Bahasa Indonesia. Yii Framework

pusingnya memformat tampilan tanggal dan menginput tanggal dalam format Indonesia tanpa bantuan java script.

Berhubung saya bukan ahlinya java script, ini yang saya lakukan. Format terbaik yang saya uji coba adalah dd-MM-yyyy.

1. pasang extension ini:

http://www.yiiframework.com/extension/i18n-datetime-behavior/

Extension ini sangat berguna memformat ulang tampilan tanggal dan tehnik penginputan tanggal agar tidak mengikuti format standard MySQL yang “Y-m-d”. Hanya saja yang terjadi adalah extension ini secara default memformat tampilan tanggal menjadi “medium” format. Dalam Bahasa Indonesia, ini berarti “1 Jan 2011”. Problem akan terjadi ketika kita akan melakukan perubahan/update tanggal. format “medium” tetap terbawa ke field penginputan tanggal. Ini malah merepotkan karena ketika di save, tanggal dengan format “medium” tidak bisa disave ke tabel. dia akan berubah menjadi tanggal UTC, yaitu 1 Jan 1970. Oleh karena itu kenapa format dd-MM-yyyy menjadi format yang paling masuk akal untuk pengguna dalam Bahasa Indonesia. (Format ini memang sedikit berbahaya karena 12-03-2011 mestinya dibaca tanggal 12 Maret 2011, oleh orang yang sudah terbiasa dengan format ingris, akan berasumsi ini adalah 3 Desember 2011.)

Jadi, agar kita dapat merobah format-nya menjadi “dd-MM-yyyy” yang kita lakukan adalah mengganti line di baris 60-61 dari

$event->sender->$columnName = Yii::app()->dateFormatter->formatDateTime(
CDateTimeParser::parse($event->sender->$columnName, $this->dateIncomeFormat),’medium’,null);

menjadi

$event->sender->$columnName = Yii::app()->dateFormatter->format(‘dd-MM-yyyy’,
CDateTimeParser::parse($event->sender->$columnName, $this->dateIncomeFormat));

Untuk melihat efek dari perubahan ini jangan lupa menambahkan function ini ke file models dari data yang kita mau robah. Filenya misalnya: /protected/models/post.php

public function behaviors()
{
return array(‘datetimeI18NBehavior’ => array(‘class’ => ‘ext.DateTimeI18NBehavior’)); // ‘ext’ is in Yii 1.0.8 version. For early versions, use ‘application.extensions’ instead.
}

Sekarang coba eksekusi semua controller dan view yang menggunakan model ini. Jika tadinya berbentuk yyyy-MM-dd (atau Y-m-d dlm format mySQL) sekarang akan berubah format menjadi “dd-MM-yyyy”

2. Penginputan tanggal dengan format dd-MM-yyyy. Kembali ke kasus saya di atas, karena sekarang format-nya menjadi dd-MM-yyyy, maka ketika kita akan melakukan updating data, otomatis format ini akan terbawa ke penginputan (editing) form. Umumnya setiap field tanggal dalam semua proyek2 saya selalu memanfaatkan extension zii.widgets.jui.CJuiDatePicker bawaan Yii agar memudahkan user dalam penginputan tanggal. Contoh CJuiDatePicker dalam form penginputan akan menjadi seperti ini:

labelEx($model,’input_date’); ?>
widget(‘zii.widgets.jui.CJuiDatePicker’, array(
‘model’=>$model,
‘attribute’=>’input_date’,
// additional javascript options for the date picker plugin
‘options’=>array(
‘showAnim’=>’fold’,
‘dateFormat’=>’dd-mm-yy’,
),
‘htmlOptions’=>array(
‘style’=>’height:20px;’
),
));
?>

Perhatikan, penggunaan Format “dd-MM-yyyy” dalam CJUIDatePicker agak berbeda karena menggunakan format java/java script.. bentuknya adalah “dd-mm-yy”, format ini akan menghasilkan output yang sama dengan “dd-MM-yyyy”

3. Untuk lebih memastikan agar format penginputan ini merupakan penginputan yang valid maka, di Rules di file model-nya dapat kita tambahkan line ini

………..
array(‘input_date’,’type’, ‘type’=>’date’, ‘dateFormat’=>’dd-MM-yyyy’),
………….

Ini akan memaksa user menginput tanggal sesuai dengan format yang kita harapkan. “dd-MM-yyyy”.

4. Perubahan sekali lagi di extension DateTimeI18NBehavior. Baris 33 yang tadinya:

$event->sender->$columnName = date($this->dateOutcomeFormat, CDateTimeParser::parse($event->sender->$columnName, Yii::app()->locale->dateFormat));

diubah menjadi:

$event->sender->$columnName = date($this->dateOutcomeFormat, CDateTimeParser::parse($event->sender->$columnName, ‘dd-MM-yyyy’));

Function BeforeSave berfungsi memformat inputan yang tadinya dd-MM-yyyy, sebelum benar-benar disimpan, dikembalikan dulu formatnya ke yyy-MM-dd, agar dapat disimpan ke dalam tabel…

Semoga penjelasan ini bermanfaat untuk anda. Jika, anda ingin bertanya langsung, silahkan saja, Group Yii Framework Indonesia selalu saya buka dan memberi komentar disana.

4 thoughts on “Tampilan Tanggal dan Penginputan Tanggal dalam Format Bahasa Indonesia. Yii Framework

Leave a Comment