2017-01-14 9 views
0

나는 play2.5 스칼라 프로젝트를 가지고 있으며, 예를 들어 오류가 발생했을 때를 대비해 컨트롤러로부터 글로벌 메시지를 전달하려고합니다. 양식 글로벌 메시지를 사용하지 않고 어떻게이 작업을 수행 할 수 있습니까?scala play2.5 전역 메시지를 템플릿에 전달하는 방법

예를 들어 handleRegisterError 메서드에서 페이지 위쪽에 표시 할 전역 오류 메시지를 표시하고 싶습니다.

가장 좋은 방법은 무엇입니까?

나는 돌리기 템플릿을 사용하고

def registerUser = Action.async { implicit request => 

    RegisterForm.form.bindFromRequest.fold(
     formWithErrors => { 
     Future.successful(BadRequest(views.html.register(formWithErrors))) 
     }, 
     formData => { 
     registerUserService.registerUser(formData).map{ insertedId => 
      Ok(views.html.index("")) 
     } 
     .recover { 
      case cause => handleRegisterError(cause) 
     } 
     }) 


    } 

    def handleRegisterError(cause: Throwable)(implicit req: RequestHeader) : Result = {   
    cause match { 
     case dae: DataAccessException => 
     //add an error message here 
     BadRequest(views.html.register(RegisterForm.form)) 
     case _ => 
     BadRequest(views.html.register(RegisterForm.form)) 
    } 
    } 

답변

1

템플릿 매개 변수로 RequestHeader 추가 Flash 범위

Redirect(views.html.register(RegisterForm.form)).flashing("error" -> "Oops, you've got an error") 

에 부착 된 메시지와 함께 Redirect를 사용하여 오류 메시지의 경우 렌더링 할 수 있어야한다 한정된.

@(form: Form[RegisterForm])(implicit request: RequestHeader) 

@request.flash.get("error").map { message => 
    <div>@message</div> 
} 
+0

어떻게 리디렉션하지 않겠습니까? – simonC

+1

음, Twirl 템플릿에 객체를 전달할 수 있습니다. – yahor

+0

끝내서 구현 한 방법입니다.이 태그가 이미 내장되어있는 경우 방황했습니다. 어쨌든 정보 용 tnx – simonC