Medan tersuai¶
MRBS 1.12.2 boleh menemui lajur pangkalan data tambahan dan menggunakannya sebagai medan untuk tempahan, bilik dan pengguna. Oleh itu, medan tersuai ialah sambungan skema, bukan tetapan yang membuat lajur secara automatik.
Sandarkan diri dahulu
Sandarkan pangkalan data dan uji perubahan pada contoh bukan pengeluaran. MRBS peningkatan tidak membuat, memindahkan atau mengalih keluar lajur khusus tapak.
Di mana medan tersuai disokong¶
| Jadual pangkalan data | Tujuan | Peraturan penting |
|---|---|---|
entry |
Data tambahan untuk tempahan individu | Tambahkan lajur yang sama pada repeat |
repeat |
Data templat untuk tempahan berulang | Kekalkan nama, jenis, panjang, kebolehbatalan dan lalai sama dengan entry |
room |
Bilik tambahan atau sifat sumber | Dipaparkan dan diedit dengan data bilik |
users |
Data profil pengguna tambahan | Digunakan hanya dengan pengesahan pangkalan data |
Lajur entry tanpa lajur repeat yang sama menyebabkan operasi tempahan berulang gagal. Anggap pasangan itu sebagai satu perubahan skema.
Gunakan hanya huruf, nombor dan garis bawah dalam nama lajur. Untuk keserasian dengan PostgreSQL, mulakan dengan huruf atau garis bawah. Lebih suka nama huruf kecil yang stabil seperti participant_count atau catering.
Jenis pangkalan data yang disokong¶
| jenis SQL | MRBS kawalan |
|---|---|
TEXT |
Teks berbilang baris |
VARCHAR |
Input teks atau teks berbilang baris, bergantung pada panjang maksimumnya |
DATE |
Input tarikh |
DECIMAL / NUMERIC |
Input nombor |
INT |
Input integer |
SMALLINT / TINYINT |
Kotak semak, ditafsirkan sebagai nilai Boolean |
Gunakan SMALLINT untuk medan tersuai Boolean pada PostgreSQL dan TINYINT pada MySQL. Jenis lajur lain tidak disokong oleh pengendalian medan tersuai automatik.
Tambahkan medan pada skema¶
Contoh menganggap awalan jadual mrbs_ lalai. Gantikannya jika $db_tbl_prefix mempunyai nilai lain.
Medan tempahan¶
Contoh ini menambah pilihan katering pilihan:
ALTER TABLE mrbs_entry
ADD COLUMN catering VARCHAR(32) DEFAULT NULL;
ALTER TABLE mrbs_repeat
ADD COLUMN catering VARCHAR(32) DEFAULT NULL;
Kedua-dua pernyataan berfungsi dengan MySQL dan PostgreSQL. Sahkan definisi yang terhasil dalam kedua-dua jadual sebelum membuka borang tempahan.
Kotak semak bilik¶
Dalam MRBS 1.12.2, lalai pangkalan data digunakan apabila baris baharu dicipta. Pilih lalai dengan sengaja, terutamanya untuk medan wajib dan kotak pilihan.
Berikan medan itu label yang diterjemahkan¶
Tanpa penggantian, MRBS memperoleh label daripada nama lajur. Tentukan satu label bagi setiap bahasa aktif dalam config.inc.php:
$vocab_override['en']['entry.catering'] = 'Catering';
$vocab_override['de']['entry.catering'] = 'Verpflegung';
$vocab_override['fr']['entry.catering'] = 'Restauration';
$vocab_override['es']['entry.catering'] = 'Catering';
Untuk pasangan entry/repeat, tentukan hanya entry.catering; tiada token repeat.catering diperlukan. Ruangan dan medan pengguna menggunakan token seperti room.coffee_machine dan users.phone.
Lihat Teks dan terjemahan untuk menimpa perbendaharaan kata, fail bahasa dan halaman Bantuan yang diterjemahkan.
Pilih tingkah laku input¶
Pilihan tetap¶
$select_options menggantikan input percuma dengan senarai pilih:
$select_options['entry.catering'] = array(
'' => 'Please select',
'c' => 'Coffee',
's' => 'Sandwiches',
'h' => 'Hot lunch',
);
Untuk tatasusunan bersekutu, MRBS menyimpan kunci (c) dan memaparkan, mencari dan melaporkan nilai (Coffee). Ini membolehkan perkataan berubah tanpa menulis semula data yang disimpan.
Elakkan kekunci yang hanya terdiri daripada digit: PHP menukar kunci rentetan seperti integer kepada integer, jadi MRBS boleh mentafsir tatasusunan sebagai diindeks. Sertakan pilihan kosong apabila pilihan wajib mesti dimulakan tanpa dipilih.
$select_options disokong untuk medan entry.name, entry.description, medan entry tersuai dan medan users tersuai. Kapsyen pilihan yang ditetapkan ialah rentetan seluruh tapak; label medan itu sendiri boleh diterjemahkan dengan $vocab_override.
Cadangan dengan input percuma¶
Gunakan $datalist_options untuk cadangan sementara masih menerima nilai lain:
Ia menyokong medan yang sama seperti $select_options. Dengan senarai data bersekutu, kunci yang disimpan boleh mengejutkan pengguna, jadi uji tingkah laku sebelum digunakan.
Medan wajib, peribadi dan disahkan¶
Jadikan medan wajib di mana-mana:
Atau hanya di lokasi dengan ID pangkalan data 1 dan 3:
Peraturan mandatori khusus lokasi hanya digunakan pada medan entry. Kotak semak wajib mesti ditanda sebelum penyerahan.
Medan peribadi peribadi disokong untuk entry dan users:
Ini melindungi nilai hanya apabila tempahan peribadi didayakan dan ditetapkan. Uji setiap peranan yang berkaitan; jangan gunakan privasi UI sebagai pengganti untuk meminimumkan data sensitif.
Pengesahan corak pada masa ini terhad kepada medan teks users tersuai:
$pattern['users.zip_code'] = '^[0-9]{5}(?:-[0-9]{4})?$';
$vocab_override['en']['users.zip_code.oninvalid'] =
'Enter a ZIP code such as 12345 or 12345-6789';
Medan teks masukan boleh diterjemahkan pemegang tempat:
Corak sisi pelanggan menambah baik maklum balas tetapi tidak menjadikan medan sebagai tempat yang selamat untuk rahsia atau penanda yang tidak dipercayai.
Kawal susunan medan¶
Letakkan medan tempahan secara eksplisit dalam cipta dan lihat halaman:
Medan yang tidak disenaraikan dilampirkan dalam susunan biasa. Medan tersuai juga boleh diletakkan dalam borang carian laporan:
Contoh lengkap¶
Selepas menambah catering pada kedua-dua jadual tempahan:
$vocab_override['en']['entry.catering'] = 'Catering';
$vocab_override['de']['entry.catering'] = 'Verpflegung';
$vocab_override['fr']['entry.catering'] = 'Restauration';
$vocab_override['es']['entry.catering'] = 'Catering';
$select_options['entry.catering'] = array(
'' => '—',
'c' => 'Coffee',
's' => 'Sandwiches',
'h' => 'Hot lunch',
);
$is_mandatory_field['entry.catering'] = array(1, 3);
$edit_entry_field_order = array('name', 'catering', 'description');
$report_search_field_order = array(
'report_start',
'report_end',
'catering',
);
Kapsyen pilihan dalam contoh ini kekal sama dalam setiap bahasa UI. Jika kapsyen pilihan yang diterjemahkan adalah keperluan, reka bentuk dan uji sambungan khusus tapak dan bukannya mengandaikan $select_options menterjemahkannya secara automatik.
Tukar, alih keluar dan tingkatkan¶
Sebelum memendekkan lajur atau menukar jenisnya, periksa nilai sedia ada dan uji penukaran. Sebelum mengalih keluar medan, padamkan rujukan konfigurasinya, laksanakan perubahan itu, sahkan aplikasi berfungsi, kemudian padamkan lajur melalui proses perubahan pangkalan data biasa. Untuk medan tempahan, tukar kedua-dua entry dan repeat.
Rekod setiap lajur tersuai dalam dokumentasi operasi tapak dan semak semula selepas setiap peningkatan MRBS. Skrip skema standard MRBS tidak memiliki lajur ini.
Senarai semak pengesahan¶
- Takrifan
entrydanrepeatadalah sama untuk setiap medan tempahan. - Membuat, mengedit, melihat, menyalin dan memadam tempahan berfungsi.
- Siri berulang dan satu kejadian boleh diedit dengan betul.
- Lalai pangkalan data digunakan pada rekod baharu.
- Tingkah laku yang diperlukan, peribadi, pilih, senarai data dan pengesahan berfungsi mengikut peranan dan lokasi.
- Label muncul dalam setiap bahasa yang ditetapkan.
- Carian, laporan, e-mel, eksport kalendar dan import/eksport menunjukkan nilai selamat.
- Pentadbiran bilik dan pengguna hanya memaparkan medan yang dimaksudkan.
- Prosedur sandaran dan pulihkan termasuk skema lanjutan.