2013-01-05 10 views
5

मैं एक साधारण मॉडल वस्तु है:कैसे 2.0 प्रपत्र खेलने के लिए एक वैश्विक रूप त्रुटि जोड़ने के लिए इंगित करने के लिए आशावादी ताला विफलता

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]] 
} 

मेरी नियंत्रक में मैं इस तरह कुछ करना चाहता हूँ, लेकिन मैं पता नहीं कैसे प्रतिक्रिया में ताला विफलता इंगित करने के लिए। मैं एक वैश्विक फॉर्म त्रुटि जोड़ना चाहता हूं लेकिन एपीआई से कैसे नहीं देख सकता।

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") 
      } 
     } 
    ) 
} 

उत्तर

11

प्ले 2.0.4

एक वैश्विक त्रुटि के लिए वास्तव में कुंजी के बिना कोई त्रुटि है (globalErrors विधि देखें)।

एक त्रुटि जोड़ने के लिए कोई सहायक नहीं है, लेकिन आप खुद ही यह कर सकते हैं, ऐसा ही कुछ के साथ:

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

प्ले के लिए 2.1

आप withGlobalError विधि का उपयोग कर सकते हैं:

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

यह वही है जो मैं ढूंढ रहा था। धन्यवाद – Brian

+0

क्षमा करें इसे उत्तर के रूप में चिह्नित करने के लिए भूल गए। बिलकुल :) – Brian

संबंधित मुद्दे