PHP 프레임워크 – Laravel – 5 – 폼 처리와 검증

PHP 프레임워크 - Laravel - 5 - 폼 처리와 검증
PHP 프레임워크 – Laravel – 5 – 폼 처리와 검증

PHP 프레임워크 – Laravel – 폼 처리와 검증

안녕하세요 여러분~ 😊
이번 시간에는 Laravel 개발에서 아주 자주 사용되는 **폼 처리(Form Handling)**와 **데이터 검증(Validation)**에 대해 배워볼 거예요.

사용자가 웹 페이지에서 정보를 입력하고 제출하는 순간!
바로 그때 Laravel의 폼 처리와 검증 기능이 빛을 발한답니다 🌟

Laravel에서는 복잡하고 귀찮을 수 있는 폼 입력 처리 과정을
간단하고 안전하며 효율적으로 만들 수 있는 도구들을 아낌없이 제공하고 있어요.


왜 폼 처리와 검증이 중요할까요?

💡 비유하자면?

웹사이트에 입력 폼이 있다면,
사용자는 ‘편지’를 보내는 사람이고,
우리는 Laravel을 통해 그 편지가 잘 썼는지, 맞춤법이 틀리지 않았는지 확인하고
잘 전달되도록 도와주는 역할을 하는 거죠! ✉️✅


1. HTML 폼 만들기 (Blade에서)

Laravel에서 일반적인 HTML 폼을 작성해봅시다.

<form action="/contact" method="POST">
    @csrf
    <label>이름:</label>
    <input type="text" name="name"><br>

    <label>이메일:</label>
    <input type="email" name="email"><br>

    <label>메시지:</label>
    <textarea name="message"></textarea><br>

    <button type="submit">보내기</button>
</form>

@csrf는 무엇인가요?

  • CSRF 공격 방지 토큰입니다.
  • Laravel은 보안을 위해 POST 요청 시 이 토큰이 없으면 오류를 발생시켜요.

2. 라우트 등록하기

routes/web.php에 라우트를 등록해줘야겠죠?

use App\Http\Controllers\ContactController;

Route::post('/contact', [ContactController::class, 'submit']);

3. 컨트롤러에서 폼 데이터 받기

컨트롤러에서 요청 데이터를 받을 수 있어요.

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ContactController extends Controller
{
    public function submit(Request $request)
    {
        $name = $request->input('name');
        $email = $request->input('email');
        $message = $request->input('message');

        // 여기에 데이터 저장, 이메일 발송 등 처리 가능
        return back()->with('success', '문의가 성공적으로 접수되었습니다!');
    }
}

input()은 폼에서 전송된 값을 가져오는 Laravel의 편리한 메서드랍니다 😊


4. 데이터 검증(Validation) 하기

사용자 입력을 무작정 받아들이면 보안에도, 사용자 경험에도 큰 문제가 발생할 수 있어요.
Laravel에서는 이런 입력값들을 쉽게 검증할 수 있어요!

$request->validate([
    'name' => 'required|max:50',
    'email' => 'required|email',
    'message' => 'required|min:10',
]);

유효성 검사에 실패하면 자동으로 이전 페이지로 리디렉션되고, 에러 메시지를 보여줘요.


5. 에러 메시지 출력하기

Blade 템플릿에서 유효성 에러를 출력하는 방법은 정말 간단해요!

@if ($errors->any())
    <div style="color:red;">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

Laravel은 자동으로 $errors 변수를 뷰에 공유해줘서 사용이 쉬워요!


6. 성공 메시지 출력하기

성공적인 제출 메시지를 보여줄 수도 있어요.

@if (session('success'))
    <div style="color:green;">
        {{ session('success') }}
    </div>
@endif

return back()->with('success', '문의가 성공적으로 접수되었습니다!');에서 넘어온 메시지를 출력합니다.


7. 유효성 규칙 정리

규칙 설명
required 필수 입력
email 유효한 이메일 형식
min:value 최소 글자 수
max:value 최대 글자 수
confirmed 동일한 값 확인용 (ex. 비밀번호 확인)
unique:table DB에서 유일한 값 여부 확인
numeric 숫자 입력만 허용
regex:/정규표현식/ 형식 제어

8. 커스텀 에러 메시지 설정

좀 더 친절한 에러 메시지를 제공하고 싶을 때는 이렇게 설정할 수 있어요!

$request->validate([
    'name' => 'required',
    'email' => 'required|email',
], [
    'name.required' => '이름을 입력해 주세요.',
    'email.required' => '이메일 주소를 입력해 주세요.',
    'email.email' => '이메일 형식이 올바르지 않습니다.',
]);

9. Request 클래스로 검증 분리하기 (폼 요청 전용 클래스)

컨트롤러가 너무 복잡해질 경우, 전용 폼 요청 클래스를 만들 수 있어요.

php artisan make:request ContactRequest

app/Http/Requests/ContactRequest.php 파일이 생성됩니다.

public function rules()
{
    return [
        'name' => 'required|max:50',
        'email' => 'required|email',
        'message' => 'required|min:10',
    ];
}

public function messages()
{
    return [
        'name.required' => '이름은 필수 항목입니다.',
        'email.email' => '이메일 형식을 지켜 주세요!',
    ];
}

그리고 컨트롤러에서는 이렇게 바꿔주면 끝!

public function submit(ContactRequest $request)
{
    // 자동으로 유효성 검사 완료됨
}

10. old() 함수로 입력값 유지하기

폼에 입력한 값이 에러 후 사라지면 사용자 입장에서 불편하겠죠?

<input type="text" name="name" value="{{ old('name') }}">

에러 발생 시 이전에 입력한 값을 유지시켜줍니다 😊


주의할 점 ✅

항목 설명
CSRF 토큰 POST, PUT, DELETE 요청에는 반드시 @csrf 필요
에러 출력 $errors->any() 또는 특정 필드만 출력 가능
자동 리디렉션 validate() 실패 시 자동 리디렉션됨
입력값 유지 old() 함수로 사용자가 작성한 값 유지
사용자 친화 메시지 커스텀 메시지로 더 나은 UX 제공 가능

요약 정리 🎯

항목 설명
폼 작성 HTML로 기본 폼 구성, @csrf 필수
입력 받기 $request->input() 또는 $request->all() 사용
유효성 검사 $request->validate() 또는 FormRequest 사용
에러 출력 $errors 활용한 블레이드 에러 메시지
메시지 유지 session(), old()로 상태 전달

마무리하며 😊

폼은 웹사이트에서 가장 중요한 소통 창구입니다.
사용자가 데이터를 입력하고 제출하는 그 순간,
우리는 Laravel의 강력한 도구로 그 데이터를 안전하게 다룰 수 있어야 해요!

Laravel의 검증 시스템을 잘 활용하면
에러는 줄이고, 신뢰는 올리는 웹 애플리케이션을 만들 수 있답니다 🛡️💬

다음 시간에는 라우팅 + 컨트롤러 + 뷰 + 모델을 연결한 CRUD 구현을 함께 해볼 거예요!
그럼 오늘도 Laravel과 함께 즐겁고 튼튼한 개발 하시길 바랄게요~ 🙌💻✨

답글 남기기