Μετάβαση στο περιεχόμενο

Προσαρμοσμένα πεδία

Το MRBS 1.12.2 μπορεί να εντοπίσει πρόσθετες στήλες στη βάση δεδομένων και να τις χρησιμοποιήσει ως πεδία κρατήσεων, αιθουσών και χρηστών. Επομένως, τα προσαρμοσμένα πεδία αποτελούν επεκτάσεις του σχήματος και όχι απλές ρυθμίσεις που δημιουργούν αυτόματα στήλες.

Δημιουργία αντιγράφων ασφαλείας πρώτα

Δημιουργήστε αντίγραφο ασφαλείας της βάσης δεδομένων και δοκιμάστε την αλλαγή σε περιβάλλον εκτός παραγωγής. Οι αναβαθμίσεις MRBS δεν δημιουργούν, δεν μεταφέρουν και δεν καταργούν στήλες που αφορούν μια συγκεκριμένη εγκατάσταση.

Όπου υποστηρίζονται προσαρμοσμένα πεδία

Πίνακας βάσης δεδομένων Σκοπός Σημαντικός κανόνας
entry Επιπλέον δεδομένα για μεμονωμένη κράτηση Προσθέστε την ίδια στήλη στο repeat
repeat Δεδομένα προτύπου για επαναλαμβανόμενη κράτηση Διατηρήστε το όνομα, τον τύπο, το μήκος, τη μηδενικότητα και την προεπιλογή πανομοιότυπα με το entry
room Πρόσθετες ιδιότητες αίθουσας ή πόρου Εμφανίζονται και υποβάλλονται σε επεξεργασία μαζί με τα δεδομένα της αίθουσας
users Επιπλέον δεδομένα προφίλ χρήστη Χρησιμοποιείται μόνο με έλεγχο ταυτότητας βάσης δεδομένων

Μια στήλη entry χωρίς την ίδια στήλη repeat προκαλεί την αποτυχία των επαναλαμβανόμενων πράξεων κράτησης. Αντιμετωπίστε το ζεύγος ως μια αλλαγή σχήματος.

Χρησιμοποιήστε μόνο γράμματα, αριθμούς και κάτω παύλες στο όνομα μιας στήλης. Για συμβατότητα με το PostgreSQL, ξεκινήστε το με γράμμα ή υπογράμμιση. Προτιμήστε σταθερά, πεζά ονόματα όπως participant_count ή catering.

Υποστηριζόμενοι τύποι βάσεων δεδομένων

Τύπος SQL Έλεγχος MRBS
TEXT Κείμενο πολλών γραμμών
VARCHAR Εισαγωγή κειμένου ή κείμενο πολλών γραμμών, ανάλογα με το μέγιστο μήκος του
DATE Εισαγωγή ημερομηνίας
DECIMAL / NUMERIC Εισαγωγή αριθμού
INT Πεδίο εισαγωγής ακέραιου αριθμού
SMALLINT / TINYINT Πλαίσιο επιλογής, το οποίο ερμηνεύεται ως λογική τιμή

Χρησιμοποιήστε το SMALLINT για προσαρμοσμένα πεδία λογικού τύπου στο PostgreSQL και το TINYINT στο MySQL. Άλλοι τύποι στηλών δεν υποστηρίζονται από τον αυτόματο χειρισμό προσαρμοσμένου πεδίου.

Προσθέστε ένα πεδίο στο σχήμα

Τα παραδείγματα υποθέτουν το προεπιλεγμένο πρόθεμα πίνακα mrbs_. Αντικαταστήστε το εάν το $db_tbl_prefix έχει άλλη τιμή.

Πεδίο κράτησης

Αυτό το παράδειγμα προσθέτει μια προαιρετική επιλογή τροφοδοσίας:

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

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

Και οι δύο δηλώσεις λειτουργούν με MySQL και PostgreSQL. Επαληθεύστε τους ορισμούς που προκύπτουν και στους δύο πίνακες πριν ανοίξετε τη φόρμα κράτησης.

Πλαίσιο επιλογής αίθουσας

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;

Στο MRBS 1.12.2, η προεπιλογή της βάσης δεδομένων χρησιμοποιείται όταν δημιουργείται μια νέα σειρά. Επιλέξτε σκόπιμα τις προεπιλογές, ειδικά για υποχρεωτικά πεδία και πλαίσια ελέγχου.

Δώστε στο πεδίο μια μεταφρασμένη ετικέτα

Χωρίς παράκαμψη, το MRBS αντλεί την ετικέτα από το όνομα της στήλης. Ορίστε μία ετικέτα ανά ενεργή γλώσσα στο 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';

Για ένα ζεύγος entry/repeat, ορίστε μόνο entry.catering. Δεν χρειάζεται διακριτικό repeat.catering. Τα πεδία αίθουσας και χρήστη χρησιμοποιούν διακριτικά όπως room.coffee_machine και users.phone.

Ανατρέξτε στο Κείμενο και μεταφράσεις για παρακάμψεις λεξιλογίου, αρχεία γλώσσας και μεταφρασμένες σελίδες Βοήθειας.

Επιλέξτε τη συμπεριφορά εισαγωγής

Σταθερές επιλογές

Το $select_options αντικαθιστά την ελεύθερη είσοδο με μια λίστα επιλογής:

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

Για έναν συσχετιστικό πίνακα, το MRBS αποθηκεύει το κλειδί (c) και εμφανίζει, πραγματοποιεί αναζήτηση και αναφέρει την τιμή (Coffee). Αυτό επιτρέπει να αλλάζει η διατύπωση χωρίς να ξαναγράφονται τα αποθηκευμένα δεδομένα.

Αποφύγετε κλειδιά που αποτελούνται μόνο από ψηφία: Το PHP μετατρέπει πλήκτρα συμβολοσειράς που μοιάζουν με ακέραιο σε ακέραιους, επομένως το MRBS μπορεί να ερμηνεύσει τον πίνακα ως ευρετηριασμένο. Συμπεριλάβετε μια κενή επιλογή όταν μια υποχρεωτική επιλογή πρέπει να ξεκινήσει χωρίς επιλογή.

Το $select_options υποστηρίζεται για πεδία entry.name, entry.description, προσαρμοσμένα πεδία entry και προσαρμοσμένα πεδία users. Οι ρυθμισμένες λεζάντες επιλογών είναι συμβολοσειρές σε όλο τον ιστότοπο. η ίδια η ετικέτα πεδίου μπορεί να μεταφραστεί με $vocab_override.

Προτάσεις με ελεύθερη εισαγωγή

Χρησιμοποιήστε το $datalist_options για προτάσεις, ενώ αποδέχεστε μια άλλη τιμή:

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

Υποστηρίζει τα ίδια πεδία με το $select_options. Με τις συσχετιστικές λίστες δεδομένων, το αποθηκευμένο κλειδί μπορεί να εκπλήξει τους χρήστες, επομένως δοκιμάστε τη συμπεριφορά πριν από τη χρήση.

Υποχρεωτικά, ιδιωτικά και επικυρωμένα πεδία

Κάντε ένα πεδίο υποχρεωτικό παντού:

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

Ή μόνο σε περιοχές με αναγνωριστικά βάσης δεδομένων 1 και 3:

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

Οι υποχρεωτικοί κανόνες για συγκεκριμένη περιοχή ισχύουν μόνο για πεδία entry. Ένα υποχρεωτικό πλαίσιο ελέγχου πρέπει να ελέγχεται πριν από την υποβολή.

Τα ιδιωτικά προσαρμοσμένα πεδία υποστηρίζονται για entry και users:

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

Αυτό προστατεύει την τιμή μόνο όταν οι ιδιωτικές κρατήσεις είναι ενεργοποιημένες και σωστά ρυθμισμένες. Δοκιμάστε κάθε σχετικό ρόλο. Μην χρησιμοποιείτε το απόρρητο της διεπαφής ως υποκατάστατο της ελαχιστοποίησης ευαίσθητων δεδομένων.

Η επικύρωση μοτίβου περιορίζεται προς το παρόν σε προσαρμοσμένα πεδία κειμένου 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';

Τα πεδία κειμένου μιας κράτησης μπορούν να έχουν μεταφρασμένο κείμενο υπόδειξης:

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

Τα μοτίβα που ελέγχονται στην πλευρά του πελάτη βελτιώνουν την ενημέρωση του χρήστη, αλλά δεν καθιστούν ένα πεδίο ασφαλές για ευαίσθητα δεδομένα ή μη αξιόπιστη σήμανση.

Έλεγχος της σειράς των πεδίων

Τοποθετήστε ρητά τα πεδία κράτησης στις σελίδες δημιουργίας και προβολής:

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

Τα πεδία που δεν αναφέρονται προσαρτώνται με την κανονική τους σειρά. Προσαρμοσμένα πεδία μπορούν επίσης να τοποθετηθούν στη φόρμα αναζήτησης αναφοράς:

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

Ολοκληρωμένο παράδειγμα

Αφού προσθέσετε το catering και στους δύο πίνακες κρατήσεων:

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

Οι λεζάντες των επιλογών σε αυτό το παράδειγμα παραμένουν ίδιες σε κάθε γλώσσα της διεπαφής. Εάν απαιτούνται μεταφρασμένες λεζάντες επιλογών, σχεδιάστε και δοκιμάστε μια επέκταση για τον συγκεκριμένο ιστότοπο, αντί να θεωρήσετε ότι το $select_options τις μεταφράζει αυτόματα.

Αλλαγή, κατάργηση και αναβάθμιση

Πριν μειώσετε το μήκος μιας στήλης ή αλλάξετε τον τύπο της, ελέγξτε τις υπάρχουσες τιμές και δοκιμάστε τη μετατροπή. Πριν αφαιρέσετε ένα πεδίο, αφαιρέστε τις σχετικές αναφορές από τη διαμόρφωση, θέστε σε λειτουργία αυτή την αλλαγή, επιβεβαιώστε ότι η εφαρμογή λειτουργεί και μόνο τότε διαγράψτε τη στήλη μέσω της κανονικής διαδικασίας αλλαγής της βάσης δεδομένων. Για τα πεδία κράτησης, αλλάξτε το entry και το repeat.

Καταγράψτε κάθε προσαρμοσμένη στήλη στην τεκμηρίωση λειτουργιών του ιστότοπου και ελέγξτε την ξανά μετά από κάθε αναβάθμιση MRBS. Τα τυπικά σενάρια σχήματος MRBS δεν ανήκουν σε αυτές τις στήλες.

Λίστα ελέγχου επαλήθευσης

  • Οι ορισμοί entry και repeat είναι πανομοιότυποι για κάθε πεδίο κράτησης.
  • Η δημιουργία, η επεξεργασία, η προβολή, η αντιγραφή και η διαγραφή μιας κράτησης λειτουργεί.
  • Μια επαναλαμβανόμενη σειρά και μία μεμονωμένη εμφάνισή της μπορούν να υποβληθούν σωστά σε επεξεργασία.
  • Οι προεπιλογές βάσης δεδομένων εφαρμόζονται σε νέες εγγραφές.
  • Η συμπεριφορά των απαιτούμενων, ιδιωτικών, επιλεγμένων, λίστας δεδομένων και επικύρωσης λειτουργούν ανά ρόλο και περιοχή.
  • Οι ετικέτες εμφανίζονται σε κάθε διαμορφωμένη γλώσσα.
  • Η αναζήτηση, οι αναφορές, το ηλεκτρονικό ταχυδρομείο, η εξαγωγή ημερολογίου και η εισαγωγή/εξαγωγή εμφανίζουν ασφαλείς τιμές.
  • Η διαχείριση αιθουσών και χρηστών εμφανίζει μόνο τα προβλεπόμενα πεδία.
  • Οι διαδικασίες δημιουργίας αντιγράφων ασφαλείας και επαναφοράς περιλαμβάνουν το εκτεταμένο σχήμα.