유효성 검사 업그레이드

라이브러리 문서

변경된 사항

  • 유효성 검사 오류 표시를 변경하려면 CI4 유효성 검사 뷰 템플릿을 설정해야 합니다.

  • CI4 유효성 검사에는 CI3의 콜백이 없습니다. 대신 호출 가능 규칙 (v4.5.0 이후) 또는 클로저 규칙 (v4.3.0 이후) 또는 규칙 클래스를 사용하십시오.

  • CI3에서는 콜백/호출 가능 규칙이 우선시되었지만, CI4에서는 클로저/호출 가능 규칙이 우선시되지 않으며 나열된 순서대로 검사됩니다.

  • v4.5.0부터 호출 가능 규칙이 도입되었지만, CI3의 호출 가능과는 약간 다릅니다.

  • CI4 유효성 검사 형식 규칙은 빈 문자열을 허용하지 않습니다.

  • CI4 유효성 검사는 데이터를 절대 변경하지 않습니다.

  • v4.3.0부터 validation_errors()가 도입되었지만, API는 CI3과 다릅니다.

업그레이드 가이드

  1. 폼이 포함된 뷰에서 다음을 변경해야 합니다:

    • <?php echo validation_errors(); ?><?= validation_list_errors() ?>

  2. 컨트롤러에서는 다음을 변경해야 합니다:

    • $this->load->helper(array('form', 'url'));helper('form');

    • $this->load->library('form_validation'); 줄을 제거하십시오

    • if ($this->form_validation->run() == FALSE)if (! $this->validateData($data, $rules))로 변경합니다. 여기서 $data는 검사할 데이터로, 일반적으로 POST 데이터 $this->request->getPost()입니다.

    • $this->load->view('myform');return view('myform', ['validation' => $this->validator,]);

  3. 유효성 검사 규칙을 변경해야 합니다. 새 구문은 컨트롤러에서 규칙을 배열로 설정하는 것입니다:

    <?php
    
    $isValid = $this->validateData($data, [
        'name'  => 'required|min_length[3]',
        'email' => 'required|valid_email',
        'phone' => 'required|numeric|max_length[10]',
    ]);
    

코드 예제

CodeIgniter 버전 3.x

경로: application/views:

<html>
<head>
    <title>My Form</title>
</head>
<body>

    <?php echo validation_errors(); ?>

    <?php echo form_open('form'); ?>

    <h5>Username</h5>
    <input type="text" name="username" value="" size="50" />

    <h5>Password</h5>
    <input type="text" name="password" value="" size="50" />

    <h5>Password Confirm</h5>
    <input type="text" name="passconf" value="" size="50" />

    <h5>Email Address</h5>
    <input type="text" name="email" value="" size="50" />

    <div><input type="submit" value="Submit" /></div>

    </form>

</body>
</html>

경로: application/controllers:

<?php

class Form extends CI_Controller {

    public function index()
    {
        $this->load->helper(array('form', 'url'));

        $this->load->library('form_validation');

        // Set validation rules

        if ($this->form_validation->run() == FALSE) {
                $this->load->view('myform');
        } else {
                $this->load->view('formsuccess');
        }
    }
}

CodeIgniter 버전 4.x

경로: app/Views:

<html>
<head>
    <title>My Form</title>
</head>
<body>

    <?= validation_list_errors() ?>

    <?= form_open('form') ?>

    <h5>Username</h5>
    <input type="text" name="username" value="" size="50" />

    <h5>Password</h5>
    <input type="text" name="password" value="" size="50" />

    <h5>Password Confirm</h5>
    <input type="text" name="passconf" value="" size="50" />

    <h5>Email Address</h5>
    <input type="text" name="email" value="" size="50" />

    <div><input type="submit" value="Submit" /></div>

    </form>

</body>
</html>

경로: app/Controllers:

<?php

namespace App\Controllers;

use CodeIgniter\Controller;

class Form extends Controller
{
    public function index()
    {
        helper('form');

        $data = $this->request->getPost();

        if (! $this->validateData($data, [
            // Validation rules
        ])) {
            return view('myform');
        }

        return view('formsuccess');
    }
}