Replies: 5 comments 15 replies
-
Ini pembahasannya bakalan panjang. Sekalian Saya bikin draf dokumentasi ekstensi panel saja di sini karena sampai sekarang memang masih belum ada. Semua data panel tersedia sebagai array statis, tersimpan secara global di dalam variabel Hook::set('_', function($_) {
test($_);
exit;
}); Beberapa data penting yang terkait secara langsung dengan variabel
Data GUI terdapat di dalam lot:
# Bagian menu
bar: []
# Bagian konten
desk:
lot:
form:
lot:
# Bagian kepala
# Biasanya berisi tajuk dan tombol-tombol aksi utama
0: []
# Bagian badan formulir
1:
lot:
tabs:
lot:
# Daftar tab
page: []
data: []
art: []
# Bagian kaki
# Biasanya berisi paginasi pada halaman indeks
# Atau berisi tombol-tombol aksi formulir pada halaman item
2: [] Pada daftar tab terdapat page:
lot:
fields:
lot:
title: []
content: []
description: []
type: []
data:
lot:
fields:
lot:
link: []
time: []
art:
lot:
fields:
lot:
css: []
js: [] Nama-nama key pada setiap bidang tidak terlalu penting. Bagaimana data tersebut dikonversi nantinya akan ditentukan oleh bidang title:
type: 'field/title'
name: 'page[title]'
content:
type: 'field/source'
name: 'page[content]'
type:
type: 'field/item'
name: 'page[type]'
lot:
HTML: HTML
Markdown: Markdown
# ...
time:
type: 'field/date-time'
name: 'data[time]' Secara garis besar, struktur formulir yang dibentuk nantinya akan tampak seperti ini: <form method="post">
<input name="page[title]" type="text">
<textarea name="page[content]"></textarea>
<textarea name="page[description]"></textarea>
<input name="page[type]" type="radio" value="HTML">
<input name="page[type]" type="radio" value="Markdown">
<!-- ... -->
<input name="data[time]" type="text">
</form> Ketika dikirim, data-data tersebut akan terkait ke $_['form'] = [
'lot' => [
'data' => [
'time' => ""
],
'page' => [
'content' => "",
'description' => "",
'title' => "",
'type' => ""
],
'token' => ""
],
'type' => 'post'
];
---
title: ""
description: ""
type: ""
...
# Data `$_['form']['lot']['page']['content']` akan muncul di sini.
Untuk menambahkan bidang baru cukup kompleks karena ketika kita menambahkan bidang tanpa mengecek tipe panel terlebih dahulu, kadang akan menimbulkan efek-efek yang tidak diinginkan misalnya bidang yang ditambahkan tersebut malah jadi muncul di tipe-tipe panel yang bukan merupakan formulir. Jadi pertama-tama kita perlu menentukan kondisi yang tepat untuk menambahkan bidang baru: Hook::set('_', function($_) {
if (
isset($_['lot']['desk']['lot']['form']['lot'][1]['lot']['tabs']['lot']['data']['lot']['fields']['lot']) &&
0 === strpos($_['type'] . '/', 'page/')
) {
// Tambahkan bidang baru di sini dengan aman
if ($_['f']) {
$page = new Page($_['f']);
} else {
$page = new Page;
}
$_['lot']['desk']['lot']['form']['lot'][1]['lot']['tabs']['lot']['data']['lot']['fields']['lot']['title-custom'] = [
'title' => 'Heading',
'description' => 'Title for heading.',
'type' => 'field/text', // atau `text` saja
'name' => 'page[title_h1]',
'value' => $page['title_h1'],
'stack' => 40
];
}
return $_;
}); |
Beta Was this translation helpful? Give feedback.
-
Saya mencoba menambah isian formulir di panel. Di dalam berkas // ...
'headline' => [
'type' => 'headline',
'name' => 'page[headline]',
'value' => $page['headline'],
'width' => true,
'stack' => 40
],
// ... Dan, di folder function headline($value, $key) {
$v = (string) ($value['value'] ?? "");
if (!\array_key_exists('hint', $value)) {
$value['hint'] = "" !== $v ? $v : 'Headline Goes Here';
}
if (!isset($value['max'])) {
$value['max'] = 200;
}
return \x\panel\type\field\text($value, $key);
} Saya cek dan lakukan percobaan submit, ternyata berhasil. Di laman terkait, nilai Apakah langkah saya sudah tepat? Saya lihat ini juga mengubah semua formulir |
Beta Was this translation helpful? Give feedback.
-
Panel input type field/ option, setelah kita lakukan update postingan, option yang kita pilih itu selalu reset ke semula. saat kita kan pengen check ulang postingan/ update/ edit, option yang kita pilih sebelumnya itu, tampilnya tidak tetap di panel, jadi misalnya data yang sudah kita masukkan sebelum nya sudah benar, saat kita lakukan update, datanya berubah. bagaimana cara kita mengakalinya kang? berikut contoh panel field option yang saya gunakan $_['lot']['desk']['lot']['form']['lot'][1]['lot']['tabs']['lot']['jobPosting']['lot']['fields']['lot']['type_salary'] = [
'title' => 'Tipe Gaji',
'description' => 'Harian/ Mingguan/ Bulanan.',
'type' => 'field/option',
'name' => 'page[type_salary]',
'value' => $page['type_salary'],
'stack' => 22,
'lot' => [
0 => [
'title' => 'DAY',
'value' => 'DAY'
],
1 => [
'title' => 'WEEK',
'value' => 'WEEK'
],
2 => [
'title' => 'MONTH',
'value' => 'MONTH'
],
3 => [
'title' => 'YEAR',
'value' => 'YEAR'
],
4 => [
'title' => 'HOUR',
'value' => 'HOUR'
]
]
]; |
Beta Was this translation helpful? Give feedback.
-
di mecha 3.0.0 ini, kode ini error kang.
|
Beta Was this translation helpful? Give feedback.
-
Cara menampilkan item panel
|
Beta Was this translation helpful? Give feedback.
-
Saya baru saja mencoba install ekstensi panel.
Di ekstensi panel, saya menemukan formulir berisi
input
title
,slug
,content
,deskripsi
, dan opsi tipemarkdown
danHTML
.Ketika saya membaca diskusi tentang , kita bisa membuat
YAML
secara bebas, misalnya,title_h1
.Yang saya ingin tanyakan, bisakah saya menambah formulir isian di panel, semisal
heading 1
. Dan nantinya akan otomatis ada di dataYAML
?Dari mana saya harus memulainya?
Beta Was this translation helpful? Give feedback.
All reactions