Session::flash('key', 'value');
redirect_to_homepage($url);
Για να πάρουμε αυτό που αποθηκεύσαμε στο session γράφουμε
Session::get('key');
Αν θέλουμε να εμφανίσουμε κάποιο μήνυμα στο πάνω μέρος της οθόνης, μπορούμε να χρησιμοποιήσουμε την ''Session::Messages($message_or_messages_array, $class='alert-warning')'' ως εξής:
Session::Messages('Υπάρχει λάθος στην φόρμα');
Redirect_to_homepage($url);
Το μήνυμα θα εμφανιστεί αυτόματα χωρίς να καλέσουμε κάποια function με default css class την ''alert-warning'' (του boostrap). Αν θέλουμε κάποια άλλη κλάση την περνάμε σαν δεύτερη παράμετρο.
Για περισσότερα από ένα μηνύματα μπορούμε να κάνουμε το παρακάτω:
Session::Messages(array('Το πεδίο όνομα είναι υποχρεωτικό', 'Το πεδίο όνομα πρέπει να περιέχει μόνο αλφαβητικούς χαρακτήρες'));
Για να αποθηκεύσουμε στο Session την $_POST (π.χ. για να κάνουμε repopulate την φόρμα μας στο επόμενο request σε περίπτωση Failed validation) μπορούμε να κάνουμε το παρακάτω:
Session::flashPost();
redirect_to_homepage($url);
Μετά το redirect έχουμε πρόσβαση στα Posted dara ως εξής:
Session::get('posted_variable_key');
Με την function ''Errors()'' μπορούμε να περάσουμε στο Session τα validation errors ανά πεδίο και να τα εμφανίσουμε στο αντίστοιχο πεδίο στην φόρμα μας ως εξής:
Session::flashPost()->Errors($valitron_errors_array);
redirect_to_homepage($url);
Για να εμφανίσουμε το error μετά το redirect χρησιμοποιούμε την παρακάτω function:
Session::getError('posted_variables_key');
By default η css class που χρησιμοποιείται είναι η ''alert-danger'' (του bootstrap). Αν θέλουμε κάποια άλλη μπορούμε να την περάσουμε ως δεύτερη παράμετρο:
Session::getError('posted_variables_key', 'alert-warning');
Οι κλάσεις του boostrap που μπορούν να χρησιμοποιηθούν για τα messages είναι οι εξής:
alert-success
alert-info
alert-warning
alert-danger
----
==== Παραδειγμα Validation με Valitron και χρήση των Flash Data για την εμφάνιση μηνυμάτων και λαθών ====
if (isset($_POST['submitPoll'])) {
$v = new Valitron\Validator($_POST);
$v->rule('required', ['PollName','PollEndMessage']);
$v->rule('alpha', ['PollName']);
$v->labels(array(
'PollName' => "$langTheField $langTitle",
'PollEndMessage' => "$langTheField $langEndMessage",
));
if($v->validate()) {
//save to db
Session::( 'success', $langPollCreated);
Redirect_to_homepage($polls_list_url);
} else {
Session::flashPost()->Messages('Υπάρχουν λάθη στην φόρμα')->Errors($v->errors());
//Εναλλακτικά μπορούμε να εμφανίσουμε όλα τα μηνύματα λάθους στο πάνω μέρος της οθόνης
// Session::flashPost()->Messages($v->errors());
Redirect_to_homepage($poll_creation_form_url);
}
}
Για να κάνουμε repopulate την φόρμα μας μπορούμε να κάνουμε το παρακάτω.
$PollName = Session::has('PollName') ? Session::get('PollName') : '');
Τα validation errors που έχουμε περάσει στο session με την ''Errors()'' μπορούμε να τα εμφανίσουμε ως εξής:
".Session::getError('PollName')."
Περισσότερα για το Valitron στο https://github.com/vlucas/valitron