アップグレードの検証
ライブラリのドキュメント
変更点
検証エラーの表示を変更したい場合は、CI4 の 検証ビューテンプレートを設定する必要があります。
CI4 の検証には、CI3 のようなコールバックや呼び出し可能オブジェクトはありません。ルールクラスまたはクロージャルールを使用してください。
CI3 では、コールバック/呼び出し可能ルールが優先されていましたが、CI4 ではクロージャルールは優先されず、リストされた順にチェックされます。
CI4 の検証形式ルールでは、空文字列は許可されません。
CI4 の検証では、データが変更されることはありません。
v4.3.0 以降、
validation_errors()
が導入されましたが、API は CI3 のものとは異なります。
アップグレードガイド
フォームを含むビュー内で、以下のように変更する必要があります。
<?php echo validation_errors(); ?>
を<?= validation_list_errors() ?>
に変更
コントローラー内で、以下のように変更する必要があります。
$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,]);
に変更
検証ルールを変更する必要があります。新しい構文では、コントローラーでルールを配列として設定します。
<?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');
}
}