Logo

Macros

context_update!, context!, impl_from_error!

context_update! — injecter des variables Tera handler
pub async fn ma_vue(mut request: Request) -> AppResult<Response> {
    let articles = vec!["Article 1", "Article 2"];

    // Injecter dans le contexte Tera
    context_update!(request => {
        "title"    => "Ma page",
        "articles" => &articles,
        "count"    => articles.len(),
    });

    request.render("ma_page.html")
}
context_update! — injecter des variables Tera handler
pub async fn ma_vue(mut request: Request) -> AppResult<Response> {
    let articles = vec!["Article 1", "Article 2"];

    // Injecter dans le contexte Tera
    context_update!(request => {
        "title"    => "Ma page",
        "articles" => &articles,
        "count"    => articles.len(),
    });

    request.render("ma_page.html")
}
Macros flash — messages utilisateur handler
// Dans un handler
success!(request.notices => "Enregistre avec succes !");
error!(request.notices   => "Une erreur est survenue.");
info!(request.notices    => "Verification en cours...");
warning!(request.notices => "Attention : session bientot expiree.");

// flash_now! — message injecte directement dans le contexte
context_update!(request => {
    "messages" => flash_now!(success => "Cree !"),
});
Macros flash — messages utilisateur handler
// Dans un handler
success!(request.notices => "Enregistre avec succes !");
error!(request.notices   => "Une erreur est survenue.");
info!(request.notices    => "Verification en cours...");
warning!(request.notices => "Attention : session bientot expiree.");

// flash_now! — message injecte directement dans le contexte
context_update!(request => {
    "messages" => flash_now!(success => "Cree !"),
});
impl_from_error! — convertir des erreurs handler
// Convertit automatiquement DbErr et autres en AppError
impl_from_error!(
    sea_orm::DbErr      => database_error,
    std::io::Error      => internal_error,
    serde_json::Error   => serialization_error,
);

// Permet d''utiliser ? dans les handlers
pub async fn handler(mut request: Request) -> AppResult<Response> {
    let article = Article::find_by_id(1).one(&*db).await?; // DbErr converti
    Ok(request.render("page.html")?)
}
impl_from_error! — convertir des erreurs handler
// Convertit automatiquement DbErr et autres en AppError
impl_from_error!(
    sea_orm::DbErr      => database_error,
    std::io::Error      => internal_error,
    serde_json::Error   => serialization_error,
);

// Permet d''utiliser ? dans les handlers
pub async fn handler(mut request: Request) -> AppResult<Response> {
    let article = Article::find_by_id(1).one(&*db).await?; // DbErr converti
    Ok(request.render("page.html")?)
}