2012-08-09 1 views
1

Posted this을 생성하십시오. 보기를 얻으려는 사람, 또는 대답을 원할 것입니다 .-Play 2.0 중첩 된 양식 : Play 사용자 그룹에 <input id = "user_email"> 대신 <input id = "user_email">

중첩 된 양식은 훌륭하지만 자바 스크립트 또는 스칼라 템플릿에 상용구를 추가하는 결함이 있습니다. 주어진 예를 들어

: 이제

<input id="user_email" name="user.email" ...> 

당신이 이메일 주소 클라이언트 측 유효성을 검사 할 때, 당신은 다음 DOM을 참조 할 수 있습니다

@inputText(field = _form("user.email"), 
    '_label-> "Email Address*", 
    'class-> "required email", 
    'placeholder-> "[email protected]" 
) 

생성 된 입력 필드 뭔가처럼 id : $('#user_email')

여기에서 $('#email')은 더 자연스러운 것입니다.

나는 id 속성을 템플릿에서 수동으로 설정할 수 있지만 기본적으로 id 속성에서 중첩 된 이름 (이 경우 사용자)을 제거하는 것을 선호합니다.

github를 보면 views helper directory, 생성 된 ID에 액세스 할 수있는 위치를 찾을 수 없습니다 (즉, 과부하 및 방법이 필요한 파일).

누구나이 문제를 해결하고 더 나은 방법을 알고 있습니까? 필드의 ID가 자동으로 생성입니다 여기에

답변

1

은 다음과 같습니다

https://github.com/playframework/Play20/blob/master/framework/src/play/src/main/scala/play/api/data/Form.scala#L274

정말 당신이 그 동작을 무시할 수있는 방법이 아니지만, 당신은 "USER_"부분을 제거합니다 자신의 @inputText 도우미를 쓸 수 HTML을 생성 할 때 ID에서.

는 기본적으로 복사 - 붙여 넣기 예를 들어, 자신의 코드와

<input type="text" id="@id" ... 

default helper 및 교체

<input type="text" id="@processFieldId(id)" ... 

또는 (검증되지 않은!) :

<input type="text" id="@(id.split('_').last)" ... 

그런 다음 당신의 템플릿에 사용자 지정 도우미를 가져, 당신은 @inputText를 사용 하듯이 그것을 사용할 수 있습니다.

+0

+1 감사합니다. 재정의하기 어려울 수도 있다고 생각했습니다. 이상적으로 이것은 input, select, textarea, radiogroup, 등등을 위해 작동 할 것이므로 소스에서 바로 새싹을 넣으면 가능한 한 가야합니다. 앞에서 말했듯이 중첩 된 양식의 id attrib을 수동으로 추가 할 수 있지만 DRY의 정신으로 질문 할 것이라고 생각합니다. – virtualeyes

+0

또한 FieldConstructor가 필드의 ID를 참조하는 것으로 나타났습니다. 나가 그 후에 ID를 거기 고침해야 한 ㄴ다는 것을 건의 한 노선을 가십시오. 꽤 지저분 해. –

+0

실제로 bigs는 없지만 더 중요한 문제가 있습니다. 템플릿에 제네릭이 없으면 양식 [사용자]를 필드 스 니펫에 전달할 때 "user.email", "user .password "등? 걸쇠 22 – virtualeyes