Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

미디어 온 연구실

예제3. CodeIgniter 4 입력 폼2 본문

예제로 배우는 코드이그나이터4

예제3. CodeIgniter 4 입력 폼2

미디어ON 2021. 7. 11. 00:51

1. 데이터베이스 및 테이블 생성

다음 SQL 쿼리를 실행하여 데이터베이스와 테이블을 생성합니다.

CREATE DATABASE demo;

CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  `email` varchar(50) NOT NULL,
  `phone` varchar(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2. 모델 및 컨트롤러 생성

FormModel.php 파일을 생성하므로 app/Models/ 디렉토리로 이동하여 FormModel.php 파일을 생성합니다. 그런 다음 FormModel.php 파일에 다음 코드를 추가합니다.

<?php 
namespace App\Models;
use CodeIgniter\Model;
class FormModel extends Model
{
    protected $table = 'users';
    protected $primaryKey = 'id';
    protected $allowedFields = ['name', 'email', 'phone'];
}

FormController.php 파일을 생성합니다. 따라서 app/Controllers 디렉토리를 방문하여 FormController.php를 생성합니다. 그런 다음 여기에 다음 코드를 추가합니다.

<?php 
namespace App\Controllers;
use App\Models\FormModel;
use CodeIgniter\Controller;
class FormController extends Controller
{
    public function create() {
        return view('contact_form');
    }
 
    public function formValidation() {
        helper(['form', 'url']);
        
        $input = $this->validate([
            'name' => 'required|min_length[3]',
            'email' => 'required|valid_email',
            'phone' => 'required|numeric|max_length[10]'
        ]);
        $formModel = new FormModel();
 
        if (!$input) {
            echo view('contact_form', [
                'validation' => $this->validator
            ]);
        } else {
            $formModel->save([
                'name' => $this->request->getVar('name'),
                'email'  => $this->request->getVar('email'),
                'phone'  => $this->request->getVar('phone'),
            ]);          
            return $this->response->redirect(site_url('/submit-form'));
        }
    }
}

index() 함수는 연락처 양식 템플릿을 보기로 렌더링합니다.
contactForm() 메서드는 유효성 검사 형식을 처리하고 다양한 변수를 포함합니다.

3.   뷰어 생성

contact_form.php 보기 파일을 생성하므로 application/views/ 디렉토리로 이동하여 contact_form.php 파일을 생성합니다. 그런 다음 contact_form.php 파일에 다음 HTML을 추가합니다.

<!doctype html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <title>Codeigniter 4 Form Validation Example</title>
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
  <style>
    .container {
      max-width: 550px;
    }
  </style>
</head>

<body>
  <div class="container mt-5">
         
    <?php $validation = \Config\Services::validation(); ?>

    <form method="post" action="<?php echo base_url('/submit-form') ?>">
      <div class="form-group">
        <label>Name</label>
        <input type="text" name="name" class="form-control">

        <!-- Error -->
        <?php if($validation->getError('name')) {?>
            <div class='alert alert-danger mt-2'>
              <?= $error = $validation->getError('name'); ?>
            </div>
        <?php }?>
      </div>
       

      <div class="form-group">
        <label>Email</label>
        <input type="text" name="email" class="form-control">

        <!-- Error -->
        <?php if($validation->getError('email')) {?>
            <div class='alert alert-danger mt-2'>
              <?= $error = $validation->getError('email'); ?>
            </div>
        <?php }?>
      </div>

      <div class="form-group">
        <label>Phone</label>
        <input type="text" name="phone" class="form-control">

        <!-- Error -->
        <?php if($validation->getError('phone')) {?>
            <div class='alert alert-danger mt-2'>
              <?= $error = $validation->getError('phone'); ?>
            </div>
        <?php }?>
      </div>

      <div class="form-group">
        <button type="submit" class="btn btn-primary btn-block">Submit</button>
      </div>
    </form>

  </div>
</body>

</html>

다음 줄은 웹 페이지에 오류 메시지를 표시합니다.

        <?php if($validation->getError('email')) {?>
            <div class='alert alert-danger mt-2'>
              <?= $error = $validation->getError('email'); ?>
            </div>
        <?php }?>

4. 경로 설정하기

경로를 정의하려면 app/Config/ 디렉토리로 이동하여 Routes.php 파일을 엽니다. 그런 다음 다음 경로를 추가하십시오.
경로는 연락처 양식을 표시하고 성공적인 양식 제출 시 데이터베이스의 데이터를 제출합니다.

$routes->get('contact-form', 'FormController::create');
$routes->post('submit-form', 'FormController::formValidation');

경로는 연락처 양식을 표시하고 성공적인 양식 제출 시 데이터베이스의 데이터를 제출합니다.

 

실행 예제

Comments