Surtout si vous utilisez un plugin page
, vous aurez peut être besoin d’interagir avec l'utilisateur via des formulaires. OverCms dispose de méthodes permettant de sécuriser et de simplifier cette échange.
Rappel: pour le design du formulaire (et de tous les autres éléments du plugin), votre plugin doit utiliser Bootstrap.
{ALERT} <form method="post" class="use-ajax"> <div class="form-group"> <label>Email</label> <input type="email" name="email" class="form-control" placeholder="Votre adresse email"> </div> <input type="hidden" name="method" value="sendEmail" class="hide"> <button type="submit" class="btn btn-primary">Envoyer</button> </form>
Le tag {ALERT}
permet d'indiquer au CMS que c'est à cet emplacement que les messages seront affichés. Il doit en avoir 1 et 1 seul par page.
La classe use-ajax
permet d'indiquer au CMS que le formulaire peut être envoyé par AJAX. A noter que l'envoi de fichier n'est pas supporté via AJAX.
L'<input>
cachée nommée method
est très pratique pour se retrouver parmi plusieurs formulaires (voir ci dessous), mais même si vous n'utilisez qu'un seul formulaire il est recommandé d'utiliser cette input.
Pour traiter cette requête, il suffit d'écrire ceci dans votre plugin:
if (POST_METHOD === 'sendEmail') { $email = $_POST['email']; // Traitement des données... $success = rand(0, 1); if ($success) { // Renvoie un message de succès: Les modifications ont été enregistrés respond(true, 'MODIFICATION_SUCCESSFUL'); } else { // Renvoie un message d'erreur: Une erreur inconnue est survenue respond(false, 'UNKNOWN_ERROR'); } }
respond()
permet de répondre à l'utilisateur suivant la requête:
- Si la requête a été faite par AJAX, alors une réponse adaptée sera envoyée (et le script s'arrête) pour que le client affiche le message sans rafraîchissement de la page
- Si la requête a été faite normalement (sans AJAX), alors le message sera enregistré pour être affiché dans {ALERT} lorsque la page sera affichée
Un 3ème paramètre peut être ajouté à respond()
pour rediriger l'utilisateur après avoir afficher le message. A la manière de go()
, la racine du site et le slash de fin est automatiquement ajouté. Pour actualiser la page, utilisez "$"
. Quelques exemples:
// Affiche le message et actualise la page: respond(true, 'MODIFICATION_SUCCESSFUL', '$'); // Affiche le message et navigue à /dossier/nouveautes/ respond(true, 'MODIFICATION_SUCCESSFUL', 'dossier/nouveautes'); // Affiche le message et va à la page courante (supprime les arguments) respond(true, 'MODIFICATION_SUCCESSFUL', REQUEST_CURRENT);
Page suivante: Base de données