2013-01-05 2 views
5

Ho un semplice oggetto del modello:Come aggiungere un errore di forma globale si gioca modulo 2.0 per indicare blocco ottimistico fallimento

case class Region(id: String, revision: Option[String], name: String) 

object Region {   
    // Returns Some(region) if successful, None if revision doesn't match the latest 
    // in the data store 
    def insertOrUpdate(region: Region): Promise[Option[Region]] 
} 

Nel mio controller voglio fare qualcosa di simile, ma io non so come per indicare l'errore di blocco nella risposta. Vorrei aggiungere un errore di modulo globale ma non riesco a vedere come dall'API.

def update(id: String) = Action { 
    implicit request => regionForm.bindFromRequest.fold(
     formWithErrors => BadRequest(views.html.regions.edit(formWithErrors)),   
     region => Async{ 
      Region.insertOrUpdate(region).map{ 
       _ match { 
        case None => { 
        // How do I add a global form error indicating there were server side changes detected 
         BadRequest(views.html.regions.edit(regionForm.fill(region)) 
        } 
        case Some(r) => Redirect(views.html.regions.index).flashing(("success", "Update successful") 
      } 
     } 
    ) 
} 

risposta

11

for Gioca 2.0.4

un errore globale è in realtà un errore senza chiave (vedere globalErrors metodo).

Non v'è alcun aiuto per aggiungere un errore, ma si può fare da soli, con qualcosa di simile:

regionForm.fill(region) 
    .copy(errors = FormError("", "Your Error Message") +: errors) 

for Gioca 2.1

È possibile utilizzare il metodo withGlobalError:

regionForm.fill(region) 
    .withGlobalError("Your error message"))) 
+1

Questo è esattamente quello che stavo cercando. Grazie – Brian

+0

Mi dispiace dimenticare di contrassegnarlo come risposta. Ci vai :) – Brian