Messages flash

Notifications de session côté serveur, affichées une seule fois après une redirection.

Cliquez sur le bouton pour injecter les 4 types de messages et les voir affichés.

Afficher les messages

4 niveaux disponibles

  • Succès — action réussie, enregistrement, connexion
  • Info — information neutre
  • Avertissement — attention requise
  • Erreur — erreur, accès refusé
views.rs — injection dans la vue
pub async fn about(
    mut request: Request,
) -> AppResult<Response> {
    success!(request.notices => "Action successful.");
    info!(request.notices => "Information message.");
    warning!(request.notices => "Attention required.");
    error!(request.notices => "An error occurred.");

    request.render("about/about.html")
}
views.rs — redirection typique
// After an action: add + redirect
pub async fn create_post(
    mut request: Request,
) -> AppResult<Response> {
    let form: BlogForm = request.form("blog");
    let form = match ValidationForm::try_form(form, &request).await {
        Ok(validated) => validated,
        Err(form) => {
            context_update!(request => { "blog_form" => &form });
            return request.render("blog/blog.html");
        }
    };
    if form.save(&request.engine.db).await.is_ok() {
        success!(request.notices => "Article published!");
    }
    Ok(Redirect::to("/blog").into_response())
}
flash_now! — message immédiat sans session
// Display the message on the current page (no redirect)
context_update!(request => {
    "messages" => flash_now!(error => "Invalid form."),
});
index.html — affichage dans le template
<!-- dans le layout de base -->
<main>
    {% block messages %}
        {% messages %}
    {% endblock %}
    {% block content %}{% endblock %}
</main>