===== Session Flash Data ===== Μερικές φορές θέλουμε να αποθηκεύσουμε στο session κάποιο αντικείμενο/μεταβλητή μόνο για το επόμενο request στον server. Αυτό μπορούμε να το πετύχουμε με τα flash data και σύμφωνα με τα παρακάτω παραδείγματα. 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