Formatter Type
Di bawah ini adalah semua format yang didukung oleh module ini secara default. Module-module lain mungkin juga menambahkan format tipe nya masing-masing:
- boolean/bool
- clone
- custom
- date
- delete
- embed
- interval
- location
- multiple-text
- number
- text
- json
- join
- rename
- router
- switch
boolean|bool
Mengubah nilai menjadi boolean.
'field' => [
'type' => 'boolean'
]
clone
Mengambil nilai dari properti lain. Salah satu dari source
atau sources
harus
diisi. Perbedaan antar keduanya adalah, source
hanya mengambil satu properti dan
nilai dari properti tersebut menjadi nilai dari field ini. Sementara penggunaan
sources
akan menguban niai ini menjadi object dengan properti sesuai dengan yang
ditentukan.
'field' => [
'type' => 'clone',
'source' => [
'field' => 'user.name.first',
'type' => 'text' // optional
],
'sources' => [
'name' => [
'field' => 'user.name.first',
'type' => 'text' // optional
],
'age' => [
'field' => 'user.age',
'type' => 'number' // optional
]
]
]
custom
Mengubah nilai menggunakan custom handler.
'field' => [
'type' => 'custom',
'handler' => 'Class::method'
]
Custom handler akan di panggil dengan bentuk seperti di bawah:
Class::method($value, $field, $object, $format, $options);
Parameter yang dikirimkan sama persis dengan custom handler di atas.
date
Mengubah nilai properti object menjadi Date
. Jika nilai timezone
tidak diisi, maka nilai dari yang sedang berjalan di aplikasi akan
digunakan.
'field' => [
'type' => 'date',
'timezone' => 'UTC', // Asia/Jakarta // optional
]
Object ini kemudian memiliki properti/method sebagai berikut:
$date->format($format);
$date->timezone;
$date->time;
$date->value;
$date->{DateTime fuctions}();
delete
Menghapus properti
'field' => [
'type' => 'delete'
]
embed
Mengubah nilai properti menjadi URL suatu embed HTML code.
'field' => [
'type' => 'embed'
]
Object ini memiliki beberapa properti sebagai berikut:
$embed->url; // string
$embed->provider; // string
$embed->html; // string
interval
Mengubah nilai properti menjadi object interval.
'field' => [
'expiration' => 'interval'
]
Object ini kemudian memiliki properti/method sebagai berikut:
$date->format($format);
$date->time;
$date->value;
$date->DateTime;
$date->DateInterval;
location
Mengubah nilai properti object menjadi object location.
'field' => [
'type' => 'location'
]
Object ini sekarang memiliki properti berikut:
$loc->long;
$loc->lat;
$loc->embed->google(string $apikey);
Nilai yang diharapkan yang bisa diubah menjadi lokasi adalah dalam format
lat,long
.
multiple-text
Mengubah nilai properti menjadi array multiple text object. Silahkan mengacu pada type text untuk detail masing-masing text object.
'field' => [
'type' => 'multiple-text',
'separator' => ',' // PHP_EOL, |
]
number
Mengubah nilai menjadi object number.
'field' => [
'type' => 'number',
'decimal' => 2 // optional
]
Object ini kemudian memiliki properti/method sebagai berikut:
$num->value;
$num->format([$decimal=0, [$decimal_sep=',', [$thousand_sep='.']]]);
text
Menguban nilai menjadi object text
'field' => [
'type' => 'text',
'default' => 'DEFAULT VALUE' // optional
]
Opsi default
akan digunakan sebagai pengganti nilai field jika nilai yang sekarang
adalah falsy
Object ini kemudian memiliki properti/method sebagai berikut:
$text->chars($len);
$text->words($len);
$text->safe;
$text->clean;
$text->value;
Properti safe dan clean akan mengembalikan object dengan type text
.
json
Mengubah nilai properti yang adalah text menjadi array/object dengan fungsi
json_decode
. Jika properti format
di set, maka object tersebut akan
teruskan ke formatter dengan tipe sesuai dengan nilai properti tersebut.
'field' => [
'type' => 'json',
'format' => '/other-format-name/' // optional
]
join
Menggabungkan nilai properti object atau text menjadi nilai properti ini
'field' => [
'type' => 'join',
'fields' => ['My', 'name', 'is', '$name.first'],
'separator' => ' '
]
Untuk mengambil niali properti object, gunakan prefix $
. Untuk mendapatkan
nilai dari sub-object, masing-masing properti dipisakan dengan titik.
rename
Mengubah nama properti menjadi sesuatu yang lain:
'field' => [
'type' => 'rename',
'to' => 'newfield'
]
router
Opsi untuk mengubah atau membuat nilai properti menjadi url dari router
'field' => [
'type' => 'router',
'router' => [
'name' => 'routerName',
'params' => [
'id' => '$id',
'name' => 'post',
'slug' => '$user.name'
]
]
]
Nilai params
akan dikirimkan ke router builder dimana nilai dari array params
tersebut diambil dari object yang sedang di format jika di awali dengan $
,
atau string.
switch
Opsi yang memungkinkan suatu field di format dengan tipe format yang berbeda berdasarkan nilai properti suatu objek.
'field' => [
'type' => 'switch',
'case' => [
'rkey0' => [
'field' => '/field-name/',
'operator' => '=',
'expected' => 1,
'result' => [
'type' => 'number'
]
],
'rkey1' => [
'field' => '/field-name/',
'operator' => '>',
'expected' => 1,
'result' => [
'type' => 'date'
]
],
'rkey2' => [
'field' => '/field-name/',
'operator' => '<',
'expected' => 1,
'result' => [
'type' => 'delete'
]
]
]
]
Pada contoh di atas, nilai properti field
akan di format berdasarkan nilai dari properti
lain object ini. Jika nilai dari properti /field-name/
adalah 1, maka format tipe number
akan digunakan, jika nilai /field-name/
lebih besar dari 1, maka format tipe date
yang
akan digunakan, dan begitu seterusnya.
Perlu diketahui bahwa case format collective akan diproses satu persatu.