Skoči na vsebino

Polja po meri

MRBS 1.12.2 lahko zazna dodatne stolpce podatkovne zbirke in jih uporabi kot polja rezervacij, sob in uporabnikov. Polja po meri so zato razširitev sheme, ne nastavitve, ki bi samodejno ustvarile stolpce.

!!! warning »Najprej varnostno kopiraj«

Varnostno kopirajte bazo podatkov in preizkusite spremembo na neprodukcijskem primerku. MRBS nadgradnje ne ustvarijo, preselijo ali odstranijo stolpcev, specifičnih za spletno mesto.

Kjer so podprta polja po meri

Tabela baze podatkov Namen Pomembno pravilo
entry Dodatni podatki za individualno rezervacijo Dodajte enak stolpec v repeat
repeat Predloga podatkov za ponavljajočo se rezervacijo Naj bodo ime, vrsta, dolžina, možnost ničnosti in privzeti podatki enaki entry
room Dodatne lastnosti sobe ali vira Prikazano in urejeno s podatki o sobi
users Dodatni podatki uporabniškega profila Uporablja se samo s preverjanjem pristnosti baze podatkov

Stolpec entry brez identičnega stolpca repeat povzroči neuspeh ponavljajočih se operacij rezervacije. Par obravnavajte kot eno spremembo sheme.

V imenu stolpca uporabite samo črke, številke in podčrtaje. Za združljivost z PostgreSQL ga začnite s črko ali podčrtajem. Dajte prednost stabilnim imenom z malimi črkami, kot je participant_count ali catering.

Podprte vrste baz podatkov

Vrsta SQL MRBS nadzor
TEXT Večvrstično besedilo
VARCHAR Vnos besedila ali večvrstično besedilo, odvisno od njegove največje dolžine
DATE Vnos datuma
DECIMAL / NUMERIC Vnos številke
INT Vnos celega števila
SMALLINT / TINYINT Potrditveno polje, interpretirano kot logična vrednost

Uporabite SMALLINT za logična polja po meri na PostgreSQL in TINYINT na MySQL. Samodejna obravnava polj po meri ne podpira drugih vrst stolpcev.

Dodajte polje v shemo

Primeri predvidevajo privzeto predpono tabele mrbs_. Zamenjajte ga, če ima $db_tbl_prefix drugo vrednost.

Polje za rezervacijo

Ta primer doda neobvezno izbiro gostinske ponudbe:

ALTER TABLE mrbs_entry
  ADD COLUMN catering VARCHAR(32) DEFAULT NULL;

ALTER TABLE mrbs_repeat
  ADD COLUMN catering VARCHAR(32) DEFAULT NULL;

Oba stavka delujeta z MySQL in PostgreSQL. Preverite dobljene definicije v obeh tabelah, preden odprete obrazec za rezervacijo.

Potrditveno polje sobe

ALTER TABLE mrbs_room
  ADD COLUMN coffee_machine TINYINT NOT NULL DEFAULT 0;
ALTER TABLE mrbs_room
  ADD COLUMN coffee_machine SMALLINT NOT NULL DEFAULT 0;

V MRBS 1.12.2 je privzeta baza podatkov uporabljena, ko je ustvarjena nova vrstica. Premišljeno izberite privzete vrednosti, zlasti za obvezna polja in potrditvena polja.

Polju dajte prevedeno oznako

Brez preglasitve MRBS izpelje oznako iz imena stolpca. Določite eno oznako na aktivni jezik v 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';

Za par entry/repeat definirajte samo entry.catering; žeton repeat.catering ni potreben. Polja sobe in uporabnika uporabljajo žetone, kot sta room.coffee_machine in users.phone.

Za preglasitve besedišča, jezikovne datoteke in prevedene strani pomoči glejte Besedilo in prevodi.

Izberite vedenje vnosa

Fiksne izbire

$select_options nadomesti prosti vnos z izbranim seznamom:

$select_options['entry.catering'] = array(
    ''  => 'Please select',
    'c' => 'Coffee',
    's' => 'Sandwiches',
    'h' => 'Hot lunch',
);

Za asociativno polje MRBS shrani ključ (c) in prikaže, išče in poroča vrednost (Coffee). To omogoča spreminjanje besedila brez prepisovanja shranjenih podatkov.

Izogibajte se ključem, ki so sestavljeni samo iz števk: PHP pretvori ključe nizov, podobnih celim številom, v cela števila, zato lahko MRBS matriko interpretira kot indeksirano. Vključite prazno izbiro, ko se mora obvezna izbira začeti neizbrana.

$select_options je podprt za polja entry.name, entry.description, polja po meri entry in polja po meri users. Konfigurirani napisi možnosti so nizi za celotno spletno mesto; samo oznako polja je mogoče prevesti z $vocab_override.

Predlogi z brezplačnim vnosom

Uporabite $datalist_options za predloge, medtem ko še vedno sprejemate drugo vrednost:

$datalist_options['entry.catering'] = array(
    'Coffee',
    'Sandwiches',
    'Hot lunch',
);

Podpira ista polja kot $select_options. Pri asociativnih datalistih lahko shranjeni ključ uporabnike preseneti, zato pred uporabo preizkusite vedenje.

Obvezna, zasebna in potrjena polja

Povsod naj bo polje obvezno:

$is_mandatory_field['entry.catering'] = true;

Ali samo na področjih z ID-jema baze podatkov 1 in 3:

$is_mandatory_field['entry.catering'] = array(1, 3);

Obvezna pravila, specifična za določeno področje, veljajo samo za polja entry. Pred oddajo morate označiti obvezno potrditveno polje.

Zasebna polja po meri so podprta za entry in users:

$is_private_field['entry.internal_notes'] = true;
$is_private_field['users.phone'] = true;

To ščiti vrednost le, če so zasebne rezervacije omogočene in konfigurirane. Preizkusite vsako ustrezno vlogo; ne uporabljajte zasebnosti uporabniškega vmesnika kot nadomestek za zmanjšanje občutljivih podatkov.

Preverjanje vzorcev je trenutno omejeno na besedilna polja po meri users:

$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';

Besedilna polja vnosa imajo lahko prevedene nadomestne oznake:

$vocab_override['en']['entry.catering.placeholder'] =
    'State allergies or special requirements';

Vzorci na strani odjemalca izboljšajo povratne informacije, vendar polja ne spremenijo v varno mesto za skrivnosti ali nezaupljive oznake.

Vrstni red kontrolnih polj

Polja za rezervacije izrecno postavite na strani za ustvarjanje in ogled:

$edit_entry_field_order = array(
    'name',
    'catering',
    'description',
);

Polja, ki niso navedena, so dodana v običajnem vrstnem redu. Polja po meri lahko postavite tudi v obrazec za iskanje poročil:

$report_search_field_order = array(
    'report_start',
    'report_end',
    'catering',
    'roommatch',
);

Popolni primer

Po dodajanju catering v obe tabeli rezervacij:

$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',
);

Podnapisi možnosti v tem primeru ostanejo enaki v vseh jezikih uporabniškega vmesnika. Če so prevedeni napisi možnosti pogoj, oblikujte in preizkusite razširitev, specifično za spletno mesto, namesto da predvidevate, da jih $select_options samodejno prevede.

Spremenite, odstranite in nadgradite

Preden skrajšate stolpec ali spremenite njegovo vrsto, preglejte obstoječe vrednosti in preizkusite pretvorbo. Preden odstranite polje, odstranite njegove konfiguracijske reference, razmestite to spremembo, potrdite, da aplikacija deluje, in šele nato spustite stolpec skozi običajni postopek spreminjanja baze podatkov. Za polja za rezervacijo spremenite entry in repeat.

Zabeležite vsak stolpec po meri v operacijski dokumentaciji spletnega mesta in ga ponovno preverite po vsaki nadgradnji MRBS. Standardni skripti sheme MRBS nimajo teh stolpcev.

Kontrolni seznam za preverjanje

  • Definiciji entry in repeat sta enaki za vsa polja rezervacije.
  • Ustvarjanje, urejanje, ogledovanje, kopiranje in brisanje rezervacije deluje.
  • Ponavljajočo se serijo in en pojav je mogoče pravilno urediti.
  • Privzete nastavitve baze podatkov se uporabijo za nove zapise.
  • Zahtevano, zasebno, izbrano, seznam podatkov in preverjanje veljavnosti deluje glede na vlogo in področje.
  • Oznake se prikažejo v vsakem konfiguriranem jeziku.
  • Iskanje, poročila, e-pošta, izvoz koledarja in uvoz/izvoz kažejo varne vrednosti.
  • Sobna in uporabniška administracija prikazujeta samo predvidena polja.
  • Postopki varnostnega kopiranja in obnavljanja vključujejo razširjeno shemo.