유효성 검사
CI4의 내장 유효성 검사 규칙, 커스텀 에러 메시지, 폼 재입력을 알아봅니다.
기본 유효성 검사
적용 규칙: required, min_length, max_length, valid_email, integer, 범위 검사
커스텀 에러 메시지 (회원가입 폼)
규칙별 한국어 에러 메시지,
matches 규칙, regex_match 규칙 예제
1
기본 유효성 검사
$rules = [
'name' => 'required|min_length[2]|max_length[20]',
'email' => 'required|valid_email',
'age' => 'required|integer|greater_than[0]|less_than[151]',
];
if (! $this->validate($rules)) {
// $this->validator->getErrors() — 필드별 에러 배열
return view('form', ['errors' => $this->validator->getErrors()]);
}
// 통과: $this->request->getPost('name') 으로 값 사용
2
커스텀 에러 메시지
$rules = [
'username' => [
'label' => '사용자명',
'rules' => 'required|alpha_numeric|min_length[4]',
'errors' => [
'required' => '{field}은(는) 필수입니다.',
'alpha_numeric' => '{field}은(는) 영문자/숫자만 허용됩니다.',
'min_length' => '{field}은(는) 최소 {param}자 이상이어야 합니다.',
],
],
'password_confirm' => [
'label' => '비밀번호 확인',
'rules' => 'required|matches[password]', // password 필드와 일치해야 함
],
];
3
자주 쓰는 규칙 모음
// 문자열
'required' // 필수
'min_length[n]' // 최소 n자
'max_length[n]' // 최대 n자
'exact_length[n]' // 정확히 n자
'alpha' // 영문자만
'alpha_numeric' // 영문자+숫자
'alpha_numeric_space' // 영문자+숫자+공백
// 숫자
'integer' // 정수
'decimal' // 소수
'greater_than[n]' // n 초과
'less_than[n]' // n 미만
'greater_than_equal_to[n]'
'less_than_equal_to[n]'
// 형식
'valid_email' // 이메일
'valid_url' // URL
'valid_ip' // IP 주소
'regex_match[/pattern/]'// 정규식
// 기타
'in_list[a,b,c]' // 목록 중 하나
'matches[field]' // 다른 필드와 일치
'differs[field]' // 다른 필드와 달라야 함
'uploaded[file]' // 파일 업로드됨
'max_size[file,2048]' // 파일 최대 2MB