Validation Form 객체에서 Submit을 수행하는 경우의 유효성 검사 방법을 안내합니다.

확인해 주세요

zigger Validator는 비동기 방식으로 Submit이 구현되므로 View 에서 별도의 유효성 검사를 필요로 하지 않습니다.

사용 준비

Validation 메소드를 사용하기 위해선 아래와 같이 Controller 최상단에 use 가 선언 되어야 합니다.
use Corelib\Method 는 Submit을 통해 전달 받은 POST 값을 Controller에서 사용하기 위해 함께 선언해야 합니다.
Controller /app/test.php
<?php
use Corelib\Method;
use Corelib\Valid;
유효성 검사를 위해 Submit을 통해 넘겨받은 POST 값을 변수에 담아 사용할 준비를 합니다.
Controller /app/test.php
<?php
use Corelib\Method;
use Corelib\Valid;

...

$req = Method::request('post', 'memberid, memberpwd');

defined 옵션으로 유효성 검사 수행

Submit을 통해 넘겨 받은 POST 값($req['memberid'])을 유효성 검사하기 위해 Validator를 설정합니다.
아래 예시는 $req['memberid'] 가 zigger에서 사용할 수 있는 회원 ID인지 검사를 수행하며, zigger 에서 미리 정의된 검증 기준으로 검사를 수행합니다.
Controller /app/test.php
<?php
use Corelib\Method;
use Corelib\Valid;

...

$req = Method::request('post', 'memberid, memberpwd');

Valid::get(
    array(
        'input' => 'id', //Submit을 보낸 HTML의 input name 입력
        'value' => $req['memberid'], //검사를 수행할 변수
        'check' => array(
            'defined' => 'id' //zigger에서 미리 정의된 검사 유형
        )
    )
);
위 설정에서 입력된 옵션 중 defined 은 zigger에서 미리 정의된 유형으로 간편하게 검사를 수행할 수 있는 옵션이며,
사용할 수 있는 미리 정의된 defined 의 종류는 아래와 같습니다.
Option 설명 기본값
idx 고유 코드값인지 검사 합니다. zigger에서 사용하는 고유 코드 값은
숫자, 영어, 언더바(_) 조합, 3~15 길이의 문자열로 구성 되어야 합니다.
id 회원 아이디로 사용할 수 있는 문자열인지 검사합니다. 아이디 값은
숫자, 영어 조합, 3~15 길이의 문자열로 구성 되어야 합니다.
phone 연락처로 사용할 수 있는 문자열인지 검사합니다. 연락처 값은
숫자, 8~12 길이의 숫자로 구성 되어야 합니다.
email 올바른 이메일 주소인지 검사합니다.
nickname 회원 닉네임으로 사용할 수 있는 문자열인지 검사합니다. 닉네임 값은
한글, 2~12 길이의 문자열로 구성 되어야 합니다.
password 비밀번호로 사용할 수 있는 문자열인지 검사합니다. 비밀번호 값은
한글, 5~50 길이의 문자열로 구성 되어야 합니다.

사용자 정의 유효성 검사 수행

defined 옵션이 아닌, 사용자 정의 구성으로 유효성 검사를 수행할 수 있습니다.
Controller /app/test.php
<?php
use Corelib\Method;
use Corelib\Valid;

...

$req = Method::request('post', 'memberid, memberpwd');

Valid::get(
    array(
        'input' => 'id', //Submit을 보낸 HTML의 input name 입력
        'value' => $req['memberid'], //검사를 수행할 변수
        'check' => array(
            'null' => true, //null 값 허용 여부
            'minlen' => 5, //최소 입력 글자 수
            'maxlen' => 20, //최대 입력 글자 수
            'charset' => 'english' //허용되는 문자셋
        ),
        'msg' => 'ID를 올바르게 입력하세요.' //올바르지 않는 경우 오류 메시지
    )
);
검사 유형을 위와 같이 설정할 수 있으며, 지원되는 검사 유형은 아래와 같습니다.
Option 설명 기본값
null(optional) 필수 값 설정
- true : 빈 값 허용
- false : 빈 값 허용하지 않음
false
minlen(optional) 최소 글자 수
maxlen(optional) 최대 글자 수
minint(optional) 최소 숫자 (int)
maxint(optional) 최대 숫자 (int)
charset(optional) 문자셋 유형
- korean: 한글만 가능
- english: 영어만 가능
- number: 숫자만 가능 (음수 불가)
- neganumber: 음수 포함된 숫자만 가능

그밖의 유형의 유효성 검사

html 검사, 정규식 검사, selected, checked 등 그밖의 타입의 유효성 검사 유형을 안내합니다.
아래 예시는 정규식 검사를 수행하는 경우의 예시입니다.
Controller /app/test.php
<?php
use Corelib\Method;
use Corelib\Valid;

...

$req = Method::request('post', 'memberid, memberpwd');

Valid::get(
    array(
        'input' => 'id', //Submit을 보낸 HTML의 input name 입력
        'value' => $req['memberid'], //검사를 수행할 변수
        'check' => array(
            'null' => true, //필수 입력값 여부
            'regexp' => [
                true, //true : 정규식에 일치하는 경우 true 반환 / false : 일치하지 않는 경우 true 반환
                '/^[0-9a-z]+$/' //대조할 정규식
            ]
        ),
        'msg' => 'ID를 올바르게 입력하세요.' //올바르지 않는 경우 오류 메시지
    )
);
checkbox 와 selecbox 선택 여부 검증은 아래와 같이 수행합니다.
Controller /app/test.php
<?php
use Corelib\Method;
use Corelib\Valid;

...

$req = Method::request('post', 'marketing_email');

//checkbox 인 경우 예시
Valid::get(
    array(
        'input' => 'marketing_email', //Submit을 보낸 HTML의 input name 입력
        'value' => $req['marketing_email'], //검사를 수행할 변수
        'check' => array(
            'checked' => true //checkbox가 checked 되었는지 검사
        )
    )
);

//selectbox 인 경우 예시
Valid::get(
    array(
        'input' => 'marketing_email', //Submit을 보낸 HTML의 input name 입력
        'value' => $req['marketing_email'], //검사를 수행할 변수
        'check' => array(
            'selected' => true //selectbox가 selected 되었는지 검사
        )
    )
);
입력 내용 중 사용 불가 html 소스코드가 포함 되었는지 검사하는 방법은 아래와 같습니다.
Controller /app/test.php
<?php
use Corelib\Method;
use Corelib\Valid;

...

$req = Method::request('post', 'html_article');

Valid::get(
    array(
        'input' => 'html_article', //Submit을 보낸 HTML의 input name 입력
        'value' => $req['html_article'], //검사를 수행할 변수
        'check' => array(
            'chkhtml' => true //사용불가 html 포함 여부 검사
        )
    )
);

무조건 error 출력

무조건 error를 출력한 뒤 코드 실행을 강제 종료 합니다.
Controller /app/test.php
<?php
use Corelib\Method;
use Corelib\Valid;

...

if (!$req['memberid']) {
    Valid::error(input, msg);
}
Option 설명 기본값
input Submit을 보낸 HTML의 input name 입력
msg error 문구 입력

유효성 검사 수행 후 Return

유효성 검사 이후 Submit을 보낸 Controller로 검사 결과를 return (Callback) 합니다.
return은 비동기 방식으로 전달되며, zigger는 return 유형에 따라 웹페이지 새로고침, 이동, Ajax load 등의 다양한 처리를 할 수 있습니다.

아래 예시는 유효성 검사가 완료된 이후 Controller로 검사 결과를 return하여 웹브라우저가 웹페이지를 새로고침 하도록 조치합니다.
Controller /app/test.php
<?php
use Corelib\Method;
use Corelib\Valid;

...

$req = Method::request('post', 'memberid');

Valid::get(
    array(
        'input' => 'memberid', //Submit을 보낸 HTML의 input name 입력
        'value' => $req['memberid'], //검사를 수행할 변수
        'check' => array(
            'defined' => 'id'
        )
    )
);

Valid::set(
    array(
        'return' => 'alert->reload', //유효성 검사가 문제 없다면 웹페이지 새로고침
        'msg' => '완료 되었습니다.' //유효성 검사가 문제 없는 경우 안내 메시지 (alert)
    )
);
Valid::turn(); //return 수행
지원되는 return 유형은 아래와 같습니다.
구분 설명
"return" : "alert->location" 유효성 검사 이후 특정 웹페이지로 이동.
"msg" : "완료 후 메시지 (alert)",
"location" : "/page (이동할 페이지 url)"
"return" : "alert->reload" 유효성 검사 이후 특정 웹페이지로 새로고침.
"msg" : "완료 후 메시지 (alert)"
"return" : "callback" 유효성 검사 이후 javascript 함수 실행.
"function" : "function_name()"
"return" : "callback-txt" 유효성 검사 이후 html 객체에 문자 삽입.
"msg" : "success!! (삽입될 문자)",
"element" : "#element"
"return" : "ajax-load" 유효성 검사 이후 html 객체에 웹페이지 Ajax load.
"document" : "/ajax_webpage (웹페이지 url)",
"element" : "#element"
"return" : "alert->close->opener-reload" 현재 웹페이지가 window 창인경우 유효성 검사 이후 현재 창을 닫고 부모 창(opner)을 새로고침.
"msg" : "완료 후 새창에서 노출될 메시지 (alert)"