validator

Last updated 2 months ago

back-end에서 정의한 validation 룰을 front-end에서 사용할 수 있도록 다음과 같이 해야합니다. 이와 같이 지정한 룰은 front-end Validator에서 활용됩니다.

XeFrontend::rule('myRuleName', [
'email' => 'required|email',
'password' => 'required'
]);

폼 검증 룰의 정의

data-rule-alert-type (form)

유효성 체크를 통과하지 못할 경우 보여질 메시지형태를 정의합니다. 지원하는 메시지 출력 형태는 아래와 같습니다.

  • toast

    • XE.toast 팝업의 형태로 메시지가 노출됩니다.

  • form

    • 해당 필드 요소하단에 메시지가 노출됩니다.

<form data-rule-alert-type="toast">
...
</form>

data-valid (input element)

입력 값을 검사할 rule을 지정합니다.

<input type="text" name="email" data-valid="required|email" />

지원하는 룰은 아래 목록에서 확인할 수 있습니다.

  • required

    • 필수 요소일 경우 사용합니다.

  • checked:min-max

    • checkbox, raido 타입에 사용됩니다.

    • 첫번째 엘리먼트에만 해당 요소가 정의되어야 합니다.

    • min, max는 number 타입으로 지정합니다. radio button에서는 필수 체크시 checked:1로 표기 합니다.

  • alpha

    • 알파벳으로만 사용되는 필드 값을 체크합니다.

  • alphanum 또는 alpha_num

    • 알파벳 또는 숫자 값을 체크합니다.

  • min

    • 최소 입력 글자를 체크합니다

  • max

    • 최대 입력 글자를 체크합니다

  • email

    • 이메일 형식인지 체크합니다.

  • url

    • url형식으로 입력되었는지 체크합니다.

  • numeric

    • 숫자값만 입력되었는지 체크합니다.

  • between:min,max

    • 필드 값이 최소, 최대에 만족하는지 체크합니다.

  • accepted

    • 필드의 값이 yes, on, 1, 또는 true이어야 합니다.

  • alpha_dash

    • 필드의 값이 (숫자나 기호가 아닌) 알파벳[자음과 모음] 문자 및 숫자와 dash(-), underscore(_)로 이루어져야 합니다.

  • array

    • 필드의 값이 배열형태이어야 합니다.

  • boolean

    • 필드의 값이 반드시 true, false, 1, 0, "1", "0" 이어야 합니다.

  • date

    • 필드의 값이 strtotime PHP 함수에서 인식할 수 있는 올바른 날짜여야 합니다.

  • date_format:format

    • 필드의 값이 반드시 주어진 format과 일지해야 합니다.

  • digits:value

    • 필드의 값이 반드시 숫자여야 하고, 길이가 value이어야 합니다

  • digits_between:min,max

    • 필드의 값이 주어진 min과 max사이의 길이를 가져야 합니다.

  • filled

    • 필드가 존재하는 경우 값이 비어있으면 안됩니다.

  • integer

    • 필드의 값이 정수여야 합니다.

  • ip

    • 필드의 값이 IP 주소여야 합니다.

  • mimes:foo,bar...

    • 파일의 MIME 타입이 주어진 확장자 리스트 중에 하나와 일치해야 합니다.

  • regex:pattern

    • 필드의 값이 주어진 정규식 표현과 일치해야 합니다.

  • json

    • 필드의 값이 유효한 JSON 문자열이어야 합니다.

  • string

    • 필드의 값이 반드시 문자열이어야 합니다.

data-valid-name (input element)

validation 실패 시 'resources/lang/ko|en/validation.php' 파일에 정의된 다국어를 사용하여 :attribute 기본값으로 엘리먼트의 name속성을 사용하고 있습니다. validation 실패 메시지에서 치환되는 :attribute를 input element의 name 대신 사용자 정의할 수 있습니다.

<!-- XE form sample -->
<form id='form' action="/users" method="POST" data-rule-alert-type="toast">
<input type="text" name="name" data-valid="required" data-valid-name="이름(비실명)" />
<input type="password" name="current_password" data-valid="required" data-valid-name="현재 비밀번호" />
<input type="password" name="password" data-valid="required" data-valid-name="새 비밀번호" />
<input type="password" name="password_confirmation" data-valid="required" data-valid-name="새 비밀번호(확인)" />
</form>
XE.formValidate($('#form'));
// => 'password_confirmation은(는) 필수입력 항목입니다.'
// 대신 '새 비밀번호(확인)은(는) 필수입력 항목입니다.' 메시지 출력

data-valid-message (input element)

'새 비밀번호(확인)은(는) 필수입력 항목입니다.'와 같은 정돈하지 않은 듯한 메시지를 사용자 정의하여 변경할 수 있습니다.

<!-- XE form sample -->
<form>
<input type="password" name="password_confirmation" data-valid="required" data-valid-message="새 비밀번호는 동일하게 입력해주세요" />
</form>
// => '새 비밀번호는 동일하게 입력해주세요'

XE.Validator.setRules(ruleName, rules)

rule을 정의하고 등록합니다. 필요한 rule의 다국어 메시지가 로드되지 않은 상태일경우 ajax로 필요 메시지를 요청하는 로직이 포함되어 있습니다. 룰세팅 이후에 XE.validator.init 메소드를 호출합니다.

  • ruleName (string)

    • 정의 하는 rule의 명칭입니다. form요소의 data-rule과 동일하게 작성되어야 하며 form마다 다르게 작성될 수 있습니다.

  • rules (object)

    • 유효성 체크를 위한 rule파라미터 입니다. 폼 필드의 name속성과 룰들이 등록됩니다.

      ex){"id":"required|between:10,20","file":"mimes:jpg,gif,png|between:0,2048","name":"required"}

  • XE.validator.init(ruleName)

    • [data-rule=ruleName]으로 정의된 폼 요소에 submit이벤트시 해당 폼의 유효성 체크를 할 수 있도록 이벤트를 바인딩 합니다.

  • ruleName (string)

XE.Validator.setRules('formCheckRule', {
"id":"required|between:10,20",
"file":"mimes:jpg,gif,png|between:0,2048",
"name":"required"
});

XE.Validator.getRuleName($form)

해당 폼 요소의 ruleName을 리턴합니다.

  • $form (jquery object)

XE.Validator.check($form)

해당 폼에 정의된 rule을 체크합니다.

  • $form (jquery object)

XE.Validator.validate($form, name, rule)

$form 폼 요소의 name필드가 rule의 형태로 유효한지 체크합니다.

  • $form (jquery object)

    • form element

  • name (string)

    • 필드명

  • rule (string)

    • rule

XE.Validator.put(name, callback)

유효성을 체크할 validator를 추가합니다.

  • name (string)

    • 추가할 validator 명칭 ex)requiredAlpha

  • callback (function)

    • validation이 실행될 때 호출할 callback. validation이 실패할 경우 false를 리턴하는 로직이 포함되어야 합니다.

XE.Validator.error($element, message, replaceStrMap)

유효성체크 실패 시 호출하는 함수로 오류 메시지를 노출합니다.

  • $element (jquery object)

    • 오류를 노출할 element

  • message (string)

    • 오류 메시지

  • replaceStrMap (object)

    • 오류 메시지중 치환된 문자열 object