
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']);
                                    
                                }
                            ],
                        ]
                    ]) ?>
 
                             
                        
ความคิดเห็น