アップグレードの検証

ライブラリのドキュメント

変更点

  • 検証エラーの表示を変更したい場合は、CI4 の 検証ビューテンプレートを設定する必要があります。

  • CI4 の検証には、CI3 のようなコールバックや呼び出し可能オブジェクトはありません。ルールクラスまたはクロージャルールを使用してください。

  • CI3 では、コールバック/呼び出し可能ルールが優先されていましたが、CI4 ではクロージャルールは優先されず、リストされた順にチェックされます。

  • 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', 'url']); に変更

    • $this->load->library('form_validation'); の行を削除

    • if ($this->form_validation->run() == FALSE)if (! $this->validate([])) に変更

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

  3. 検証ルールを変更する必要があります。新しい構文では、コントローラーでルールを配列として設定します。

    <?php
    
    $isValid = $this->validate([
        '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', 'url']);

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

        return view('formsuccess');
    }
}