エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


CakePHP3のCakeDC/Usersのバリデーションのカスタマイズ方法解説

      2019/03/28

CakeDC/Usersのバリデーションのカスタマイズ方法解説

 
CakePHP3のユーザ管理・ログイン認証プラグインCakeDC/Usersのインストール解説・3.6以降対応」の記事で、CakePHP3で CakeDC/Usersを使ってログイン認証機能を実装する手順を解説しました。
また、「CakePHP3のCakeDC/Usersの画面、メール本文テンプレートのカスタマイズ方法解説」の記事で、HTMLのテンプレートを変更する解説をしました。
 
今回の記事では、その時に解説できなかった、入力画面でのバリデーションのカスタマイズ方法について解説します。
 
 

CakeDC/Usersのバリデーションが記載されているファイル

 
CakeDC/Usersのバリデーションが記載されているファイルは、以下のファイルになります。
 /vendor/cakedc/users/src/Model/Table/UsersTable.php
 
このファイルに記述されているバリデーションの内容を変更することで、バリデーションのカスタマイズを行うことは可能です。

ですが、一般的にはこのファイルはプラグイン「CakeDC/Users」のコアファイルになりますので、このファイルを直接更新することはせず、オーバーライドする処理を構築します。
 
 


 

CakeDC/Usersのバリデーションをオーバーライドでカスタマイズする

 

1.bootstrap.phpの編集

 
下記のファイルに編集を行います。
 /config/bootstrap.php
 
下記の、configファイルとして「/config/users.php」も利用する処理を記述します。

 
すでに Usersプラグインのロード処理を記述している場合は、1行目のみ追記します。
 
これは、「CakePHP3のCakeDC/Usersのログイン後のリダイレクトとユーザ権限管理の設定解説」の記事で、リダイレクトの処理の設定をする際にも記述しますので、リダイレクトなどほかの設定ですでに記述している場合もあるかと思います。
 
 

2.users.phpの編集

 
下記のファイルに編集を行います。該当のファイルがない場合は、新規作成をします。
/config/users.php
 
下記の値を編集します。

 
 
標準設定は、「/vendor/cakedc/users/config/users.php」に下記の様に記載されています。

 
「/config/users.php」は、「CakePHP3のCakeDC/UsersのUserHelperでログアウトやreCAPTCHAをカスタマイズ」で解説をした reCAPTCHAでも利用しますので、すでに設定がある場合もあるでしょう。
 
 

3.Model/Entity/User.phpの編集

 
下記のファイルに編集を行います。該当のファイルがない場合は、新規作成をします。
/src/Model/Entity/User.php
 
下記の処理を編集します。

 
この内容は、プラグインの Entity「/vendor/cakedc/users/src/Model/Entity/User.php」の内容を流用しています。
 
 

4.Model/Table/UsersTable.phpの編集

 
下記のファイルに編集を行います。該当のファイルがない場合は、新規作成をします。
/src/Model/Table/UsersTable.php
 
そして、ようやく、バリデーションの処理を記載します。

 
18行目以降の「validationDefault()」の内容は、下記のプラグインの標準設定の内容をコピペしてからカスタマイズしています。
 /vendor/cakedc/users/src/Model/Table/UsersTable.php
 
上記の例では、33行目の処理で、「first_name」を必須項目にする、という処理に変更してみています。
 
 
これで、プラグインのファイルを触らずに、バリデーションをカスタマイズすることができるようになります。
 
 
※サンプルソースを修正しました(2019.03.27)
 
上記のサンプルソースをそのままコピペした場合、下記のエラーが発生する場合がありました。
 
Error: Class 'CakeDC\Users\Model\table\UsersTable' not found
File /home/ss-giken/ttt.onl/public_html/src/Model/Table/UsersTable.php

 
そのため、下記の点を修正しました。
 

 
修正点は「Model\Table」の部分の「T」を小文字から大文字にしました。
 
ローカル(Windows)の XAMPP環境では問題ありませんでしたが、LAMP環境のサーバにアップしたらエラーが発生しました。
 
 

既存のバリデーションの英語のメッセージを日本語化する

 
/vendor/cakedc/users/src/Model/Table/UsersTable.php
には、
「パスワード」と「パスワード確認用」の入力値が同じかどうかチェック
「ユーザ名」「メールアドレス」がすでに使用されていないかどうかチェック
のバリデーションも含まれています。
 
これもバリデーションとして使われていますが、エラーのときのメッセージが英語で表示されます。
 
 
この英語のメッセージを変更する方法の一つとして、
/src/Model/Table/UsersTable.php
に、下記の関数部分のソースコードをコピペして、エラーメッセージ部分の「Username already exists」を日本語に変えることで対応することができます。
 

 
 

CakePHP3のCakeDC/Usersの関連記事

 
CakePHP3の CakeDC/Usersを使うために、基本となるインストールの方法から入力画面のテンプレートのカスタマイズや、リダイレクトの設定など、CakeDC/Usersに関する記事を下記に書いています。
あわせて参考にしてみてください。
 
CakePHP3のユーザ管理・ログイン認証プラグインCakeDC/Usersのインストール解説・3.6以降対応
CakePHP3のCakeDC/Usersの画面、メール本文テンプレートのカスタマイズ方法解説
CakePHP3のCakeDC/Usersのログイン後のリダイレクトとユーザ権限管理の設定解説
CakePHP3のCakeDC/UsersのUserHelperでログアウトやreCAPTCHAをカスタマイズ
Google reCAPTCHAのSite key、Secret keyの取得方法・20170408バージョン
 
 

CakePHP3の関連記事

CakePHP3でレコードを保存(追加、更新、Insert、Update)する複数の方法を紹介
CakePHP3でモデルなしフォームからCSVをアップロードしレコードを更新する方法解説
CakePHP3でPHP Simple HTML DOM Parserを使ってスクレイピングする方法
CakePHP3のInsert On Duplicate Key Update(upsert)構文を解説・バルク処理も
CakePHP3の1対多での連携を中間テーブルを使った多対多の連携に変更するときの手順
CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法
CakePHP3で Ajaxを使う方法の解説。3.6以降対応。Successとthenの両方を解説。
CakePHP3でパンくずの指定は HTMLヘルパーを使って指定する方法を解説
CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説
CakePHP3のOGPはHTMLヘルパーの$this->Html->meta()を使って設定
 
その他の「CakePHP3」に関する記事一覧
 
 

 - CakePHP 2.x 3.x

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

CakePHP 2.3で PDFを作成する方法を調査「mpdf」「TCPDF」「FPDF」

CakePHPで PDFを編集、出力するには「mpdf」「TCPDF」「FPDF」といったプラグインがあり、使い勝手を比較検討しました。TCPDFが一番良さそうでした。

CakePHP3のCakeDC/UsersのUserHelperでログアウトやreCAPTCHAをカスタマイズ
CakePHP3のCakeDC/UsersのUserHelperでログアウトやreCAPTCHAをカスタマイズ

CakeDC謹製Usersプラグインの紹介。UserHelperを利用し、ログアウトのリンクや権限があるときのみ表示されるリンク、プロフィールページへのリンク、reCAPTCHAの設置方法などを解説。

CakePHP 2.3でファイルのアップロード処理を作る

CakePHPでプラグインを使わないファイルアップロード処理を解説します。簡単です。DBにファイルを格納する方法も。

CakePHP3のOGPはHTMLヘルパーの$this->Html->meta()を使って設定
CakePHP3のOGPはHTMLヘルパーの$this->Html->meta()を使って設定

CakePHP3でOGPを設定する方法を解説。metaタグを編集するHTMLヘルパーを利用してOGPのタグを編集する。また、エレメントとして分割することでメンテナンス性も向上させる。

CakePHP3でモデルなしフォームからCSVをアップロードしレコードを更新する方法解説
CakePHP3でモデルなしフォームからCSVをアップロードしレコードを更新する方法解説

CakePHP3でCSVファイルをアップロードしレコードを追加、更新する処理の作成方法の解説。モデルとは直接関連しないフォームからCSVファイルをアップロードするため汎用的に使用可能。

CakePHP3でPHPExcelを使ってエクセルファイルを生成、出力する方法

CakePHP3でPHPExcelを利用してエクセルを編集、出力するサンプルソース+解説。PHPExcelのインストール方法の解説からファイル保存とダウンロードの方法なども解説。

CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法
CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法

CakePHP3でデフォルトのソート条件を設定しつつ画面上でユーザがソート条件を選択したときもソート処理を実行させる方法を解説。ソート条件はページネーションの処理として実装。

CakePHP 2.3で saveの便利な使い方・サンプルソース付き

CakePHPのレコードを保存、更新する際に使う Saveを詳細解説します。

CakePHP3でDocumentRootやtmp、webroot、logsなどのフォルダへのパスの定数
CakePHP3でDocumentRootやtmp、webroot、logsなどのフォルダへのパスの定数

CakePHP3で特定フォルダのパスの定数を解説。root、DocumentRoot、app、config、webroot、tests、tmp、cache、vendor、コア、コアの srcが設定済み。realpath()関数を使うと柔軟なパス指定が可能。

cakephp3 カスタムバリデーションを簡易的に実装する方法
cakephp3 カスタムバリデーションを簡易的に実装する方法

CakePHP3の独自のバリデーションをテーブルクラス内に簡単に記述する方法を解説。他のテーブルクラスでは使えないが、記述する量は少なく実装できるため、他で使わない処理を書くのには便利。