2011-09-07 4 views
3

양식 요소의 레이블을 참조하는 오류 메시지 내에서 변수를 사용할 수 있습니까? % hostname % (이메일 유효성 검사기)와 같은 맞춤 변수를 매핑 할 수 있으며 % value %도 사용할 수 있지만 양식 라벨도 갖고 싶습니다. 유효성 검사를 위해 오류 메시지에 변수로 레이블을 붙입니다.

은 내가 ZF 코드베이스에서 찾을 could't하지만, 사용 사례는 Zend_Validate_NotEmpty이 같은 메시지를 반환 할 수, 예를 들면 :

"The field %label% is required and can't be empty" 

대신 :

"Value is required and can't be empty" 

답변

0

드디어 장식으로 갔다. dinopmi의 해결책은 가능하지만 라벨을 항상 주입해야합니다. 양식 요소에 대한 내 오류 데코레이터는 이제 % label %를 실제 레이블로 바꿉니다.

1

나는 생각한다 validator를 서브 클래스 화하지 않으면 불가능합니다. Zend_Validate 클래스는 Zend_Form_Element에만 사용하도록되어 있지 않습니다. 메시지에 %label%이 있으면 두 구성 요소간에 커플 링이 도입됩니다.

가능한 솔루션은 Zend_Validate_NotEmpty (또는 사용중인 모든 유효성 검사기)을 확장하여 사용자 정의 유효성 검사기를 만들고 해당 레이블을 생성자에 전달하는 것입니다. 이렇게하면 인스턴스화 할 때마다 적절한 메시지를 작성할 수 있습니다.

편집 : 위의 방법을 따르는 경우에

, 당신은 심지어 자신의 %label% "마법 변수"를 정의하고 클래스의 멤버에 첨부 할 수있다. 젠드 프레임 워크 설명서의 예 2의 $_messageVariables 멤버를 참조하십시오 데 도움이 Writing validators

희망 ...

+0

안녕하세요,이 경우 우리는 모든 시간에 라벨을 삽입해야합니다. 이는 작업의 복제물이며 가능한 실패 지점입니다. 나는 그것이 팬이 아닙니다. 바로 지금, 저는 (데 -) 이것을 위해 데코레이터를 사용한다고 생각합니다. 데코레이터는 label을 포함하여 (내가 아는 한) 요소를 인식하고 오류 메시지를 통해 'str_replace() '를 쉽게 수행 할 수 있습니다. 내가 이것을 할 때 나는 뭔가를 할 때 게시하고 대답 할 것이다. –