Créer un article de blog
formulaire/blog.rs
#[form(schema = blog,
fields = [title, email, summary, website, content])]
pub struct BlogForm;
#[async_trait]
impl RuniqueForm for BlogForm {
impl_form_access!(model);
async fn clean(&mut self) -> Result<(), StrMap> {
let mut errors = StrMap::new();
if self.get_string("title").len() < 3 {
errors.insert("title", "3 caractères minimum");
}
if !self.get_string("email").contains('@') {
errors.insert("email", "Adresse invalide");
}
if errors.is_empty() { Ok(()) }
else { Err(errors) }
}
}
views.rs
pub async fn blog_submit(
mut request: Request,
Prisme(mut form): Prisme<BlogForm>,
) -> AppResult<Response> {
if request.is_post() && form.is_valid().await {
form.save(&db).await?;
success!(request.notices => "Article publié !");
return Ok(Redirect::to("/blog").into_response());
}
request.render("blog/blog.html")
}