2026년 상식닷컴 선정 식당 & 카페 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요

라라벨에서 요청(Request) 데이터를 유효성 검사를 하는 방법은?

_____
Q1: 라라벨에서 요청 데이터를 유효성 검사하는 기본적인 방법은 무엇인가요?
A1: 라라벨에서는 컨트롤러 내에서 `validate` 메서드를 사용해 쉽게 요청 데이터를 유효성 검사할 수 있습니다. 예를 들어:
```php
public function store(Request $request) {
$validatedData = $request->validate([
'title' => 'required|string|max:255',
'email' => 'required|email',
'age' => 'nullable|integer|min:18',
]);
// 유효성 검사 통과 시 $validatedData 사용 가능
}
```

---

Q2: 유효성 검사 규칙을 정의할 때 어떤 규칙들을 사용할 수 있나요?
A2: 라라벨은 다양한 유효성 규칙을 제공합니다.
- `required`: 필수 입력
- `string`: 문자열
- `max:255`: 최대 길이 255
- `min:3`: 최소 길이 3
- `email`: 이메일 형식
- `integer`: 정수형
- `nullable`: 값이 없어도 됨
- `unique:users,email`: 데이터베이스 내 중복 체크
- `confirmed`: 비밀번호 확인과 같은 검증 때 유용
그 외 상세한 규칙은 라라벨 공식 문서 참고가 권장됩니다.

---

Q3: 요청 데이터를 별도의 폼 리퀘스트 클래스로 유효성 검사를 할 수 있나요?
A3: 네, `php artisan make:request StoreUserRequest` 명령어로 폼 리퀘스트 클래스를 생성한 후, `rules()` 메서드에서 유효성 검사를 정의합니다. 컨트롤러 메서드 파라미터로 해당 클래스를 타입힌트하면 자동으로 검사가 적용됩니다.
```php
class StoreUserRequest extends FormRequest {
public function rules() {
return [
'name' => 'required|string|max:100',
'email' => 'required|email|unique:users,email',
];
}
public function authorize() {
return true; // 권한 체크 로직
}
}
// 컨트롤러에서
public function store(StoreUserRequest $request) {
$validated = $request->validated();
// 저장 처리
}
```

---

Q4: 유효성 검사 실패 시 기본 동작은 어떻게 되나요?
A4: 기본적으로 웹 요청 시 유효성 검사 실패하면 이전 페이지로 리다이렉트되면서 오류 메시지가 세션에 담기고, 입력값도 함께 플래시됩니다. API 요청(예: JSON)이라면 422 상태 코드와 함께 JSON 형식의 오류 메시지가 반환됩니다.

---

Q5: 유효성 검증에서 복잡한 조건문(예: 다른 입력값에 의존한 조건)도 가능한가요?
A5: 가능합니다. `sometimes` 규칙, 클로저, 커스텀 룰, `bail`, `required_if` 등 다양한 규칙을 합쳐 복잡한 조건을 처리할 수 있습니다. 예:
```php
'discount' => 'required_if:is_member,true|integer|min:0|max:100'
```

---

Q6: 커스텀 유효성 규칙을 만들려면?
A6: `php artisan make:rule CustomRule` 명령어로 클래스를 만들고, `passes()` 메서드 내에서 커스텀 검증 로직 작성 후, 유효성 검사 시 `'field' => ['required', new CustomRule()]`와 같이 사용하면 됩니다.

---

요약
- `$request->validate()` 메서드로 간단히 유효성 검사 가능
- 폼 리퀘스트 클래스로 구조적이고 재사용 가능한 검증 가능
- 다양한 내장 규칙과 커스텀 규칙 지원
- 실패 시 자동 리다이렉션 또는 JSON 오류 반환 처리
- 복잡한 조건도 규칙 조합 및 커스텀 룰로 대응 가능
라라벨에서 요청(Request) 데이터를 유효성 검사를 하는 방법은 매우 간단하고 직관적입니다. 라라벨은 강력한 유효성 검사 기능을 제공하여, 사용자가 입력한 데이터가 특정 규칙을 충족하는지 쉽게 확인할 수 있습니다. 아래에 라라벨에서 요청 데이터를 유효성 검사하는 방법을 단계별로 설명하겠습니다. 1. 기본적인 유효성 검사라라벨에서는 `validate` 메서드를 사용하여 요청 데이터를 검증할 수 있습니다. 예를 들어, 사용자가 제출한 폼 데이터를 검증하는 방법은 다음과 같습니다.```phpuse Illuminate\Http\Request;public function store(Request $request){ $validatedData = $request->validate([ 'name' => '<a href='https://sangseek.com/sangseeks/required/ko'>required</a>|string|max:255', 'email' => 'required|email|unique:users,email', 'password' => 'required|string|min:8|confirmed', ]); // 유효성 검사를 통과한 후의 로직}```위의 예제에서 `validate` 메서드는 배열 형태로 각 필드에 대한 규칙을 정의합니다. 각 규칙은 다음과 같은 의미를 가집니다:- `required`: 필드가 필수임을 나타냅니다.- `string`: 필드가 문자열이어야 함을 나타냅니다.- `max:255`: 문자열의 최대 길이를 255자로 제한합니다.- `email`: 필드가 유효한 이메일 형식이어야 함을 나타냅니다.- `unique:users,email`: `users` 테이블의 `email` 컬럼에서 중복되지 않아야 함을 나타냅니다.- `confirmed`: 비밀번호 확인 필드와 일치해야 함을 나타냅니다. 2. 커스텀 메시지유효성 검사에서 기본 제공되는 메시지 대신 커스텀 메시지를 사용하고 싶다면, 다음과 같이 할 수 있습니다.```php$validatedData = $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users,email', 'password' => 'required|string|min:8|confirmed',], [ 'name.required' => '이름은 필수 입력 항목입니다.', 'email.required' => '이메일은 필수 입력 항목입니다.', 'password.min' => '비밀번호는 최소 8자 이상이어야 합니다.',]);``` 3. Form Request 사용하기라라벨에서는 Form Request 클래스를 사용하여 유효성 검사 로직을 분리할 수 있습니다. 이를 통해 코드의 가독성을 높이고 재사용성을 높일 수 있습니다.1. Form Request 생성 : ```bash php artisan make:request StoreUserRequest ```2. Form Request 클래스 수정 : 생성된 `StoreUserRequest` 클래스에서 유효성 검사 규칙을 정의합니다. ```php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class StoreUserRequest extends FormRequest { public function authorize() { return true; // 권한 확인 로직 } public function rules() { return [ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users,email', 'password' => 'required|string|min:8|confirmed', ]; } } ```3. 컨트롤러에서 사용하기 : 이제 컨트롤러에서 `StoreUserRequest`를 타입힌트하여 사용할 수 있습니다. ```php use App\Http\Requests\StoreUserRequest; public function store(StoreUserRequest $request) { $validatedData = $request->validated(); // 유효성 검사를 통과한 후의 로직 } ``` 4. 결론라라벨에서 요청 데이터를 유효성 검사하는 방법은 매우 유연하고 강력합니다. 기본적인 방법부터 Form Request를 사용하는 방법까지 다양한 방식으로 유효성 검사를 구현할 수 있습니다. 이를 통해 애플리케이션의 데이터 무결성을 유지하고 사용자에게 더 나은 경험을 제공할 수 있습니다.
작성자: ㅁㅁ [비회원] | 작성일자: 1년 전 2024-08-26 08:17:05
조회수: 155 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.