Pola niestandardowe¶
MRBS 1.12.2 wykrywa dodatkowe kolumny bazy danych i może używać ich jako pól rezerwacji, pokoi oraz użytkowników. Pola niestandardowe są więc rozszerzeniem schematu; sama konfiguracja nie tworzy kolumn automatycznie.
!!! warning „Najpierw wykonaj kopię zapasową”
Utwórz kopię zapasową bazy danych i przetestuj zmianę w instancji nieprodukcyjnej. Uaktualnienia MRBS nie tworzą, nie migrują ani nie usuwają kolumn specyficznych dla witryny.
Gdzie obsługiwane są pola niestandardowe¶
| Tabela bazy danych | Cel | Ważna zasada |
|---|---|---|
entry |
Dodatkowe dane do rezerwacji indywidualnej | Dodaj identyczną kolumnę do repeat |
repeat |
Dane szablonu dla rezerwacji cyklicznej | Zachowaj nazwę, typ, długość, dopuszczalność wartości null i wartość domyślną identyczną z entry |
room |
Dodatkowe właściwości pokoju lub zasobów | Wyświetlane i edytowane z danymi pomieszczeń |
users |
Dodatkowe dane profilu użytkownika | Używane tylko z uwierzytelnianiem bazy danych |
Kolumna entry bez identycznej kolumny repeat powoduje niepowodzenie operacji rezerwacji cyklicznych. Traktuj tę parę jako jedną zmianę schematu.
W nazwie kolumny używaj wyłącznie liter, cyfr i podkreśleń. Aby zachować zgodność z numerem PostgreSQL, rozpocznij go literą lub podkreśleniem. Preferuj stabilne nazwy pisane małymi literami, takie jak participant_count lub catering.
Obsługiwane typy baz danych¶
| Typ SQL | Kontrola MRBS |
|---|---|
TEXT |
Tekst wielowierszowy |
VARCHAR |
Wprowadzanie tekstu lub tekst wielowierszowy, w zależności od jego maksymalnej długości |
DATE |
Wprowadzanie daty |
DECIMAL / NUMERIC |
Wprowadzanie numeru |
INT |
Wejście całkowite |
SMALLINT / TINYINT |
Pole wyboru interpretowane jako wartość logiczna |
Użyj SMALLINT dla niestandardowych pól logicznych na PostgreSQL i TINYINT na MySQL. Inne typy kolumn nie są obsługiwane przez automatyczną obsługę pól niestandardowych.
Dodaj pole do schematu¶
W przykładach założono domyślny przedrostek tabeli mrbs_. Wymień go, jeśli $db_tbl_prefix ma inną wartość.
Pole rezerwacji¶
W tym przykładzie dodano opcjonalny wybór cateringu:
ALTER TABLE mrbs_entry
ADD COLUMN catering VARCHAR(32) DEFAULT NULL;
ALTER TABLE mrbs_repeat
ADD COLUMN catering VARCHAR(32) DEFAULT NULL;
Obie instrukcje działają z MySQL i PostgreSQL. Przed otwarciem formularza rezerwacji sprawdź powstałe definicje w obu tabelach.
Pole wyboru pokoju¶
W wersji MRBS 1.12.2 podczas tworzenia nowego wiersza używana jest domyślna baza danych. Wybieraj wartości domyślne celowo, zwłaszcza w przypadku obowiązkowych pól i pól wyboru.
Nadaj polu przetłumaczoną etykietę¶
Bez zastąpienia MRBS wyprowadza etykietę z nazwy kolumny. Zdefiniuj jedną etykietę na aktywny język w 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';
Dla pary entry/repeat zdefiniuj tylko entry.catering; nie jest potrzebny token repeat.catering. Pola pokoju i użytkownika korzystają z tokenów, takich jak room.coffee_machine i users.phone.
Zobacz Tekst i tłumaczenia, aby zapoznać się z zastąpieniami słownictwa, plikami językowymi i przetłumaczonymi stronami pomocy.
Wybierz zachowanie wejściowe¶
Stałe wybory¶
$select_options zastępuje wolne wejście listą wyboru:
$select_options['entry.catering'] = array(
'' => 'Please select',
'c' => 'Coffee',
's' => 'Sandwiches',
'h' => 'Hot lunch',
);
W przypadku tablicy asocjacyjnej MRBS przechowuje klucz (c) oraz wyświetla, wyszukuje i raportuje wartość (Coffee). Umożliwia to zmianę brzmienia bez przepisywania przechowywanych danych.
Unikaj kluczy składających się wyłącznie z cyfr: PHP konwertuje klucze łańcuchowe typu całkowitego na liczby całkowite, więc MRBS może zinterpretować tablicę jako indeksowaną. Uwzględnij pusty wybór, jeśli obowiązkowy wybór musi rozpocząć się niezaznaczony.
$select_options jest obsługiwane dla pól entry.name, entry.description, niestandardowych pól entry i niestandardowych pól users. Skonfigurowane podpisy opcji to ciągi znaków obejmujące całą witrynę; samą etykietę pola można przetłumaczyć za pomocą $vocab_override.
Sugestie z bezpłatnym wejściem¶
Użyj $datalist_options, aby uzyskać sugestie, jednocześnie akceptując inną wartość:
Obsługuje te same pola co $select_options. W przypadku asocjacyjnych list danych przechowywany klucz może zaskoczyć użytkowników, dlatego przed użyciem przetestuj zachowanie.
Pola obowiązkowe, prywatne i zatwierdzone¶
Ustaw pole obowiązkowe wszędzie:
Lub tylko w obszarach o identyfikatorach baz danych 1 i 3:
Obowiązkowe zasady specyficzne dla obszaru mają zastosowanie tylko do pól entry. Przed przesłaniem należy zaznaczyć obowiązkowe pole wyboru.
Prywatne pola niestandardowe są obsługiwane dla entry i users:
Chroni to wartość tylko wtedy, gdy rezerwacje prywatne są włączone i skonfigurowane. Przetestuj każdą odpowiednią rolę; nie używaj prywatności interfejsu użytkownika jako substytutu minimalizacji wrażliwych danych.
Sprawdzanie poprawności wzorca jest obecnie ograniczone do niestandardowych pól tekstowych 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';
Pola tekstowe wpisów mogą mieć przetłumaczone symbole zastępcze:
Wzorce po stronie klienta poprawiają opinie, ale nie zmieniają pola w bezpieczne miejsce na sekrety lub niezaufane znaczniki.
Kolejność pól kontrolnych¶
Umieść pola rezerwacji jawnie na stronach tworzenia i przeglądania:
Pola niewymienione na liście są dołączane w normalnej kolejności. W formularzu wyszukiwania raportów można także umieścić niestandardowe pola:
Kompletny przykład¶
Po dodaniu catering do obu tabel rezerwacji:
$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',
);
Podpisy opcji w tym przykładzie pozostają takie same w każdym języku interfejsu użytkownika. Jeśli wymagane są przetłumaczone podpisy opcji, zaprojektuj i przetestuj rozszerzenie specyficzne dla witryny, zamiast zakładać, że $select_options przetłumaczy je automatycznie.
Zmień, usuń i uaktualnij¶
Przed skróceniem kolumny lub zmianą jej typu sprawdź istniejące wartości i przetestuj konwersję. Przed usunięciem pola usuń jego odniesienia do konfiguracji, wprowadź tę zmianę, potwierdź, że aplikacja działa, a dopiero potem upuść kolumnę w normalnym procesie zmiany bazy danych. W przypadku pól rezerwacji zmień zarówno entry, jak i repeat.
Zapisz każdą niestandardową kolumnę w dokumentacji operacyjnej witryny i sprawdź ją ponownie po każdej aktualizacji MRBS. Standardowe skrypty schematu MRBS nie są właścicielami tych kolumn.
Lista kontrolna weryfikacji¶
- Definicje
entryirepeatsą identyczne dla każdego pola rezerwacji. - Tworzenie, edytowanie, przeglądanie, kopiowanie i usuwanie rezerwacji działa.
- Seria cykliczna i jedno wystąpienie mogą być poprawnie edytowane.
- Do nowych rekordów stosowane są ustawienia domyślne bazy danych.
- Zachowanie wymagane, prywatne, wybieranie, lista danych i sprawdzanie poprawności działa według roli i obszaru.
- Etykiety pojawiają się w każdym skonfigurowanym języku.
- Wyszukiwanie, raporty, e-maile, eksport kalendarza i import/eksport pokazują bezpieczne wartości.
- Administracja pokojami i użytkownikami wyświetla tylko zamierzone pola.
- Procedury tworzenia kopii zapasowych i przywracania obejmują schemat rozszerzony.