라라벨 - 폼: 초보자 가이드

안녕하세요, 야심 찬 개발자 여러분! 컴퓨터 과학 교사로서 오랜 경험을 가진 저는 여러분을 라라벨 폼의 흥미로운 세상으로 안내하게 되어 기쁩니다. 프로그래밍에 새로운 분이라면 걱정하지 마세요 - 우리는 기본에서 시작하여 차례대로 진행할 것입니다. 이 튜토리얼의 끝까지 따라오시면, 프로처럼 폼을 만드는 법을 배우게 될 것입니다!

Laravel - Forms

라라벨 폼은 무엇인가요?

코드에 들어가기 전에, 라라벨 폼이 무엇인지 이해해 보겠습니다. 인터넷에서 직장 신청서를 작성하는 것을 상상해 보세요 - 그것이 폼입니다! 웹 개발에서 폼은 사용자로부터 정보를 수집하는 방법입니다. 우리의 친구 라라벨, PHP 프레임워크는 이러한 폼을 만들고 처리하는 것을 매우 쉽게 만들어줍니다.

라라벨을 사용하는 이유는 무엇인가요?

"왜 라라벨을 사용하죠?"라는 생각이 드실 수도 있습니다. 저는 이 작은 이야기를 해드리겠습니다. 저는 젊은 개발자였을 때(네, 공룡이 다니던 시절), 폼을 만드는 것은 지루한 과정이었습니다. 하지만 라라벨이 등장하면서 우리의 삶을 훨씬 더 쉽게 만들어주는 강력한 도구와 보안 기능을 제공해주었습니다.

시작하기

가장 먼저, 시스템에 라라벨이 설치되어 있는지 확인하세요. 아직 설치되어 있지 않다면, 공식 라라벨 설치 가이드를 따라 설치하시면 빠르게 준비가 될 것입니다.

예제 1: 간단한 연락처 폼 만들기

우리는 간단한 연락처 폼을 시작해 보겠습니다. 이름, 이메일, 메시지를 요청하는 폼을 만들겠습니다.

단계 1: 라우트 생성

routes 폴더의 web.php 파일을 엽니다 이 줄을 추가하세요:

Route::get('/contact', 'ContactController@showForm');

이렇게 하면 누군가가 '/contact' URL을 방문할 때 우리의 연락처 폼을 표시하게 됩니다.

단계 2: 컨트롤러 생성

터미널에서 다음 명령어를 실행합니다:

php artisan make:controller ContactController

이제 새로 만들어진 ContactController.php 파일을 엽니다 다음 메서드를 추가하세요:

public function showForm()
{
return view('contact');
}

이 메서드는 우리의 연락처 폼 뷰를 반환합니다.

단계 3: 뷰 생성

resources/views 폴더에 contact.blade.php라는 새로운 파일을 만들고 다음 코드를 추가하세요:

<form action="/submit-contact" method="POST">
@csrf
<div>
<label for="name">이름:</label>
<input type="text" id="name" name="name" required>
</div>
<div>
<label for="email">이메일:</label>
<input type="email" id="email" name="email" required>
</div>
<div>
<label for="message">메시지:</label>
<textarea id="message" name="message" required></textarea>
</div>
<button type="submit">보내기</button>
</form>

이를 분해해 보면:

  • @csrf는 CSRF 공격을 방지하기 위해 폼에 숨겨진 토큰을 추가하는 라라벨 디렉티브입니다. 이를 비밀 손 shake라고 생각할 수 있습니다.
  • 우리는 이름, 이메일, 메시지에 대한 입력 필드를 생성했습니다.
  • required 속성은 사용자가 폼을 제출하기 전에 모든 필드를 채워야 하도록 합니다.

단계 4: 폼 제출 처리

web.php에 새로운 라우트를 추가합니다:

Route::post('/submit-contact', 'ContactController@submitForm');

그런 다음 ContactController에 다음 메서드를 추가합니다:

public function submitForm(Request $request)
{
$validatedData = $request->validate([
'name' => 'required|max:255',
'email' => 'required|email',
'message' => 'required',
]);

// 폼 데이터를 처리합니다(예: 데이터베이스에 저장, 이메일 보내기)

return redirect('/contact')->with('success', '메시지를 보내주셔서 감사합니다!');
}

이 메서드는 폼 데이터를 검증하고 연락처 페이지로 돌아가며 성공 메시지를 표시합니다.

예제 2: 등록 폼 만들기

이제 우리는 더 복잡한 등록 폼을 만들어 보겠습니다.

단계 1: 라우트 생성

web.php에 다음을 추가합니다:

Route::get('/register', 'RegisterController@showForm');
Route::post('/register', 'RegisterController@register');

단계 2: 컨트롤러 생성

다음 명령어를 터미널에서 실행합니다:

php artisan make:controller RegisterController

RegisterController에 다음 메서드를 추가합니다:

public function showForm()
{
return view('register');
}

public function register(Request $request)
{
$validatedData = $request->validate([
'name' => 'required|max:255',
'email' => 'required|email|unique:users',
'password' => 'required|min:8|confirmed',
'date_of_birth' => 'required|date',
'gender' => 'required|in:male,female,other',
]);

// 사용자 생성 로직을 여기에 작성합니다

return redirect('/register')->with('success', ' 등록이 성공했습니다!');
}

단계 3: 뷰 생성

views 폴더에 register.blade.php 파일을 만들고 다음 코드를 추가합니다:

<form action="/register" method="POST">
@csrf
<div>
<label for="name">이름:</label>
<input type="text" id="name" name="name" required>
</div>
<div>
<label for="email">이메일:</label>
<input type="email" id="email" name="email" required>
</div>
<div>
<label for="password">비밀번호:</label>
<input type="password" id="password" name="password" required>
</div>
<div>
<label for="password_confirmation">비밀번호 확인:</label>
<input type="password" id="password_confirmation" name="password_confirmation" required>
</div>
<div>
<label for="date_of_birth">생년월일:</label>
<input type="date" id="date_of_birth" name="date_of_birth" required>
</div>
<div>
<label>성별:</label>
<input type="radio" id="male" name="gender" value="male" required>
<label for="male">남성</label>
<input type="radio" id="female" name="gender" value="female">
<label for="female">여성</label>
<input type="radio" id="other" name="gender" value="other">
<label for="other">기타</label>
</div>
<button type="submit">등록</button>
</form>

이 폼은 다양한 입력 유형을 포함하고 있습니다: 텍스트, 이메일, 비밀번호, 날짜, 라디오 버튼.

폼 검증 방법

다음은 일반적인 라라벨 검증 방법의 표입니다:

메서드 설명
required 필드가 비어 있지 않아야 합니다
email 유효한 이메일 주소여야 합니다
max:value 최대 길이
min:value 최소 길이
unique:table 지정된 데이터베이스 테이블에서 고유해야 합니다
confirmed 동일한 필드와 일치해야 합니다
date 유효한 날짜여야 합니다
in:foo,bar,... 지정된 값을 포함해야 합니다

결론

축하합니다! 두 개의 라라벨 폼을 만들고 처리하는 방법을 배웠습니다. 연습이 완벽을 만드는 것을 기억하세요, 다양한 폼 유형과 검증 규칙을 실험해 보세요.

마무리하면서 이 작은 이야기를 공유하고 싶습니다. 제가 가르쳤던 한 학생은 폼에 대해 무서워했습니다 - 그는 그것을 복잡하고 신비로운 것으로 생각했습니다. 하지만 몇 가지 수업을 마친 후, 그는 재미로 폼을 만들기 시작했습니다! 라라벨은 복잡한 것을 즐겁게 만들어줍니다.

계속 코딩하고, 호기심을 가지고, 궁금한 점이 있으면 언제든지 물어보세요. 폼 빌딩을 즐기세요!

Credits: Image by storyset