CodeIgniter4のValidationサンプル

CodeIgniter4では今までのでバージョン3までの構造と異なり、名前空間の利用やライブラリ、ヘルパー等に利用方法も含め大きく変わっています。

今回は現時点でバージョン4のマニュアルも整備が整っていないライブラリの中からバリデーションの例をご紹介致します。

ルール設定

バリテーションルールはコントローラーに直接記述するして簡単に利用する方法がありますが、これだと後々の管理に問題が発生する可能性が高くなりますのでバリデーション用の設定ファイルにルールを記載します。

App\Models\モデルクラスにバリデーションルールを記載する方法もあるようです。
App\Config\Validation.php
<?php namespace Config;

class Validation
{
  // 省略

  //--------------------------------------------------------------------
  // Rules
  //--------------------------------------------------------------------
 
  // 以下を追加
  public $signin = [
    'username'     => 'required',
    'password'     => 'required',
  ];
}

コントローラーサンプル

AuthController.phpを以下のように作成します。

App\Controllers\AuthController.php

<php

namespace App\Controllers;

use CodeIgniter\Controller;
use Config\Services;

class Auth extends Controller 
{
  
  public function index()
  {
    $this->helpers = ['url', 'html', 'form'];
    $this->loadHelpers();
    $validator = Services::validation();
    
    if ($this->request->getMethod() == 'post') 
    {
      $validator->run($this->request->getRawInput(), 'signin');
    }

    return view('auth/index', [
      'validation' => $validator,
    ]);  

  }
}

Viewの作成

<html xmlns="http://www.w3.org/1999/xhtml" lang="ja">
<head>

  <meta charset="utf-8">
  <title>Sample</title>
<head>
<body>
  <h1 class="title">ログイン認証</h1>
  <?= $validation->listErrors() ?>
  <?= form_open('auth/index') ?>
    <label for="username">Username</label>
    <input type="text"name="username" id="username" placeholder="Enter your Username"/>
    <label for="password">Password</label>
    <input type="password" name="password" id="password" placeholder="Enter your Password"/>
    <?= form_submit('submit', 'ログイン') ?>
  <?= form_close() ?>
<body>
</html>