🔥
CodeIgniter4 カスタムルール内でネイティブルールを使用する
はじめに
本記事はエラーメッセージの出し分けのみを目的としたカスタムルール作成のサンプルである。
必須バリデーションのエラーメッセージ例
app/Language/ja/Validation.php
<?php
return [
'required' => '{field} を入力してください',
];
受託で業務システムを開発していると
「セレクトボックス、ラジオボタン、チェックボックスの場合には『入力』ではなく『選択』と表現してほしい」
といった要望が稀によくある。
Setting Custom Error Messages
都度、カスタムエラーメッセージを設定することで対応可能ではあるが、実装者ごとのメッセージ表記揺れなどの面倒ごとは減らしたい。
実行環境
- CodeIgniter 4.4.3
実装
カスタムルールの作成方法は公式の通り。
Creating Custom Rules
app/Config/Validation.php
public array $ruleSets = [
Rules::class,
FormatRules::class,
FileRules::class,
CreditCardRules::class,
+ CustomRules::class,
];
カスタムルール内でネイティブルール required
を使用することで検証内容を変えることなく、ルールの使い分けによるエラーメッセージの出し分けを可能にする。
app/Config/CustomRules.php
<?php
namespace Config;
use CodeIgniter\Validation\StrictRules\Rules;
class CustomRules
{
private Rules $rules;
public function __construct()
{
$this->rules = new Rules();
}
/**
* @param string|null $str
* @return bool
*/
public function required_selection(?string $str = null): bool
{
return $this->rules->required($str);
}
}
app/Language/ja/Validation.php
<?php
return [
'required' => '{field} を入力してください',
'required_selection' => '{field} を選択してください',
];
Discussion