CMSのバリデーション・プラグインの作成

CMSの管理画面の入力項目に対する保存時のバリデーションをプラグインで作成することができます。ここでは、入力項目に数字を含む場合にエラーを返すプラグインを例にして説明します。フォームのバリデーションプラグインについては、以下を参照してください。

サンプルプラグインのダウンロード

カラムの詳細設定のバリデーションへの項目の追加

プラグインの作成

プラグインの作成方法の基本については、以下のドキュメントを参照してください。

plugins/
 └ CustomCMSValidation/ (root)
   ├ config.json (定義ファイル)
   ├ CustomCMSValidation.php (プラグイン・クラス)
   └ locale/
      └ ja.json (翻訳ファイル)

カスタム・バリデーションを追加するには、config.jsonに「cms_validations」というキーで記述します。

{
    "label": "CustomCMSValidation",
    "id": "customcmsvalidation",
    "component": "CustomCMSValidation",
    "description": "Custom CMS  CMS Validation Example.",
    "version": "0.1",
    "author": "Alfasado Inc.",
    "author_link": "https://alfasado.net/",
    "cms_validations": {
        "test_validaion": {
            "label": "No Number",
            "component": "CustomCMSValidation",
            "method": "test_validaion",
            "order": 1000
        }
    }
}
キー
component PHPのクラス名
label ドロップダウンに表示されるラベル
method PHPクラスのメソッド

PHPのメソッドは以下の通りです。

function test_validaion ( $label, &$value, &$msg, $col = null ) {
    if ( preg_match( '/[0-9]/', $value ) ) {
        $app = Prototype::get_instance();
        $msg = $this->translate( "The '%s' must not contain numbers.", $app->translate( $label ) );
        return false;
    }
    return true;
}

第1引数にカラムのラベル、第2引数に入力値、第3引数に(リファレンスとして&付きで受け取ります)にエラーメッセージ、第4引数がカラム名となります。

  • エラーがあった際は第四引数「&$msg」にエラーメッセージをセットして「false」を返す
  • エラーがない場合は「true」を返す

エラー「項目名」には数字を含んではいけません。