我有用戶映射如下(還有其他一些太)在Scala Play中用戶名上的不同模型驗證! 2形式的映射在創建和更新
val userMapping: Mapping[User] = mapping(
"id" -> ignored(NotAssigned: Pk[Long]),
"title" -> nonEmptyText,
"name" -> nonEmptyText,
"userName" -> nonEmptyText,
"skype" -> nonEmptyText,
"emailId" -> ignored("": String),
"secondaryEmailId" -> ignored("": String),
"password" -> ignored("": String),
"position" -> optional(text),
"active" -> boolean,
"subscribeEmail" -> boolean,
"creationDate" -> optional(date("yyyy-MM-dd")),
"lastUpdatedDate" -> optional(date("yyyy-MM-dd"))
)(User.apply)(User.unapply)
的問題是,如果我的用戶名爲應用驗證作爲
"userName" -> nonEmptyText.verifying("User name is already taken", user => !User.findUserByUserName(user.userName).isDefined)
這工作完全正常在創建用戶時,但在編輯窗體上,此驗證會中斷。 我想在創建和更新時使用相同的映射。
目前我已經將它從表單字段移動到表單級別,但事情是直到所有表單級別的錯誤,這種驗證永遠不會達到和顯示。
我的完整表格映射如下(與公司名稱相同的問題)。
val registerForm:Form[(User,Company)] = Form(
mapping(
"user" -> userMapping.verifying("User name is already taken", user => !User.findUserByUserName(user.userName).isDefined),
"password" -> passwordMapping,
"company" -> companyMapping.verifying("Company name is already registered", company => !Company.findCompanyByCompanyName(company.name).isDefined),
"emailPair" -> emailPairMapping
){(user,passwords,company,emailPair) => (user.copy(password = passwords._1,emailId = emailPair._1,secondaryEmailId = emailPair._2,active = true),company)} //binding apply
{userCompanyTuple => Some(userCompanyTuple._1, ("",""),userCompanyTuple._2,(userCompanyTuple._1.emailId,userCompanyTuple._1.secondaryEmailId))} //un binding un apply
)
對於我有映射,(驗證仍然適用)編輯的情況下
val registerFormEdit:Form[(User,Company)] = Form(
mapping(
"user" -> userMapping,
"company" -> companyMapping,
"emailPair" -> emailPairMapping
){(user,company,emailPair) => (user.copy(emailId = emailPair._1,secondaryEmailId = emailPair._2,active = true),company)} //binding apply
{userCompanyTuple => Some(userCompanyTuple._1,userCompanyTuple._2,(userCompanyTuple._1.emailId,userCompanyTuple._1.secondaryEmailId))} //un binding un apply
)
我看到的是如何獲得的id保持在編輯審定 「ID」的另一個挑戰被忽略。我需要在更新操作 方法中處理編輯案例嗎?
如果我必須在更新操作方法中執行此操作,示例代碼片段 會很棒,因爲我也很困惑如何在 操作方法中添加錯誤消息。
如果有人提供瞭如何實現這一點,那將會非常棒。
我使用Scala玩遊戲! 2.
謝謝。
感謝我最後的答案做在行動方法,與授權檢查類似於你所放的,謝謝你的git集線器黑客連接,不知道,偉大的提示:)並花時間回答一個月的問題。 – 2013-07-03 07:47:42
這個'authorize()'函數是什麼樣的? – KJ50 2015-03-06 06:00:50