Timeago เป็นเรื่องหนึ่งที่ค่อนข้างสำคัญเช่นกัน เป็นการกำหนดรายละเอียดการแสดงผลวันที่ เช่น 1 วันที่ผ่านมา 2 เดือนที่แล้ว หรือ ปีที่แล้ว เป็นต้น โดยมี package ของ jQuery ที่จะแปลงข้อมูลวันเดือนปีและเวลาไปเป็น Timeago ให้อัตโนมัติ ทั้งนี้เราต้องเตรียมข้อมูลให้อยู่ในรูปแบบที่ถูกต้องเสียก่อน
ตัวอย่างนี้เป็นการบันทึกข้อมูลในรูปแบบ Timestamp เช่น 1491655406
การติดตั้ง
สามารถติดตั้ง package ผ่าน composer โดยพิมพ์คำสั่ง
composer require yiidoc/yii2-timeago
การใช้งาน
สามารถเรียกใช้งานผ่าน widget ได้ลักษณะดังนี้
use yii\timeago\TimeAgo;
echo TimeAgo::widget(['timestamp' => $post->updated_at, 'language' => 'th']);
$post->updated_at คือ timestamp ส่วน 'language' => 'th' เป็นการระบุภาษาที่แสดงผล
ดูเพิ่มเติมได้ที่
https://github.com/yiidoc/yii2-timeago
https://packagist.org/packages/yiidoc/yii2-timeago
สามารถปรับเปลี่ยนข้อความที่แสดงผลได้ที่ vendor/bower/jquery-timeago/locals/jquery.timeago.th.js
jQuery.timeago.settings.strings = {
prefixAgo: null,
prefixFromNow: null,
suffixAgo: "ที่แล้ว",
suffixFromNow: "จากตอนนี้",
seconds: "น้อยกว่าหนึ่งนาที",
minute: "ประมาณหนึ่งนาที",
minutes: "%d นาที",
hour: "ประมาณหนึ่งชั่วโมง",
hours: "ประมาณ %d ชั่วโมง",
day: "หนึ่งวัน",
days: "%d วัน",
month: "ประมาณหนึ่งเดือน",
months: "%d เดือน",
year: "ประมาณหนึ่งปี",
years: "%d ปี",
wordSeparator: "",
numbers: []
};
นอกจากในรูปแบบ Timestamp แล้วยังสามารถใช้งานได้กับรูปแบบอื่นๆ อีก เช่น
<?=TimeAgo::widget(['timestamp' => date('Y-m-d H:i:s'), 'language' => 'th'])?>
ตัวอย่างการใช้งานใน GridView
<?= GridView::widget([
'dataProvider' => $dataProvider,
'summary' => false,
'columns' => [
//...
[
'label' => 'อ่าน',
'value' => function ($model) {
return $model->view_count;
}
],
[
'label' => 'โพสล่าสุด',
'format' => 'raw',
'value' => function ($model) {
return TimeAgo::widget(['timestamp' => $model->updated_at, 'language' => 'th']);
}
],
]
]) ?>
ความคิดเห็น