エス技研

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


CakePHP3で値を入力直後にバリデーションする方法解説

      2019/03/25

CakePHP3で入力された値を入力直後にバリデーションする処理

 
CakePHP3の入力チェックは、データベースに情報を保存する際にエラー処理を行っていますが、入力された値を何かしら加工をして、それから保存する場合など、あらかじめ入力チェックをしておきたい、と思う場面もあるでしょう。
 
そういう場合に、入力直後にバリデーション(入力チェック)を行う処理も用意されていますので、その処理について解説を行います。
 
 

CakePHP3で Bakeしたデフォルトの処理

 
CakePHP3で、リンクの情報を登録する「Links」というテーブルを作成し、Bakeして作成されたデフォルトの処理が下記になります。
 

 
 

CakePHP3で入力直後にバリデーションの処理を追加

 
前項の Bakeで作成されたデフォルトのプログラムに対して、6~10行目、20行目を追加することで、入力の値を受け取った直後にバリデーション処理を実施することができます。
 

 
「newEntity()」で取得する入力値のオブジェクトに対して、受け取った直後にバリデーション(入力チェック)を行う処理を追加しています。
 
 


 

CakePHP3でのバリデーション処理の詳細解説

 
細かく説明しますと、6行目の「newEntity()」の処理で、リクエストデータを設定します。
 

 
 
7行目の「$link_check->errors()」で、バリデーション処理で発生したエラーの情報を取得し、エラーがある場合は、エラー処理を行います。
 

 
これにより、入力エラーがある場合は、入力画面に戻り、画面上部にエラーメッセージを表示することができるようになります。
 
 

Tableファイルにバリデーションルールを追加

 
バリデーションのルールの詳細はまた改めて記事を書く予定ですが、バリデーションのルールを追加する場合は、Tableファイルにバリデーションルールを追加します。
下記の例では 8行目に追加しています。
この場合の「not-url」は、バリデーションのルールの名称ですので、他のルール名称とかぶっていなければ、「aaa」「bbb」などでも問題ありません。
 
※LinksTable.php

 
 

バリデーションで出力されるエラー

 
最後に、「$link_check->errors()」で取得できるエラーについてです。
取得できるエラーは以下のような形となっています。
 
エラーの出力される際にどのエラー処理なのか、その出力される項目名が、前項で解説をしたバリデーションのルールの名称となります。
 

 
 
詳細については、CakePHP3のマニュアルを参照してください。
https://book.cakephp.org/3.0/ja/core-libraries/validation.html#id13
 
 
ちなみに、ほぼ同じ内容ですが、フォームから入力された情報を保存する前にバリデーションをする記事を書きました。こちらもあわせて参考にしてください。
CakePHP3で保存前にバリデーション結果を取得する2つの方法
 
 

CakePHP3の関連記事

CakePHP4のCSS、JavaScript、画像のブラウザへのキャッシュをコントロールする
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」に関する記事一覧
 
 

 - CakePHP 3.x 4.x 5.x

GoogleAdwords

GoogleAdwords

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

Message

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

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

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

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

  関連記事

Windows上のXAMPP環境のCakePHPのコマンド実行時に環境変数を指定する方法
Windows上のXAMPP環境のCakePHPのコマンド実行時に環境変数を指定する方法

CakePHP4のコマンド(シェル)に対して、環境変数を指定して実行する方法を解説。LinuxとWindows上のXAMPPとでは記述方法が異なるため、Windowsのsetコマンドについても詳細解説。

CakePHP4のCakeDC/Usersの画面、メール本文テンプレートのカスタマイズ方法解説
CakePHP4のCakeDC/Usersの画面、メール本文テンプレートのカスタマイズ方法解説

CakeDC謹製Usersプラグインの紹介。ユーザ新規登録の流れを紹介しつつ、テンプレートファイル、設定情報ファイルの場所とそれらをカスタマイズする方法を説明します。

CakePHP 2.3 コマンドラインからPHPのシェル実行の方法解説

CakePHP 2.3でコマンドラインから CakePHPで記述した処理を実行する方法を解説します。

CakePHPで同一テーブル内の値を比較する条件でレコードを取得する方法
CakePHPで同一テーブル内の値を比較する条件でレコードを取得する方法

CakePHPの同一テーブルにある項目の値を比較し条件に合致するレコードを取得する方法を解説。[”項目名”=>”値”]ではなく[”項目名 = 項目名”]と書くところがポイント。

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

CakeDC謹製Usersプラグインの紹介。CakePHP4で使う場合のUsersのカスタマイズとして入力項目のバリデーションの変更を、プラグインのファイルは触らずオーバーライドにより実装する方法を解説する。

CakePHP4のcake cache clear_allでPermission deniedはパーミッションの変更が必要
CakePHP4のcake cache clear_allでPermission deniedはパーミッションの変更が必要

CakePHP4でキャッシュをクリアするコマンドcake cache clear_allでPermission deniedのエラーが出るのはcakeにパーミッションが足りないとき。その対処方法を解説。

CakePHP3のHtmlHelperのLink設定のまとめ。mailto、URL、Root/Homeのリンクなども
CakePHP3のHtmlHelperのLink設定のまとめ。mailto、URL、Root/Homeのリンクなども

CakePHP3でHtmlHelperを使ってリンクの設定をする方法のまとめ。基本形からURLを指定、class、id、targetを指定、mailtoのリンク、画像をアンカーに、JavaScriptのダイアログなどの解説。

CakePHP3のアソシエーション機能を使い関連レコードをまとめて削除

CakePHP3でレコードを削除する際に関連するレコードをまとめて削除する機能の解説。フレームワークのメリットを存分に発揮し、コマンドを1行追加するだけで実装可能。

CakePHP3でパンくずの指定は HTMLヘルパーを使って指定する方法を解説
CakePHP3でパンくずの指定は HTMLヘルパーを使って指定する方法を解説

CakePHP3でパンくずの指定方法の解説。2つのヘルパーがあるが簡単なHTMLヘルパーを使った方法を、実際の状況に合わせて3つのパターン(エレメント化、ブロック化)にして解説。

CakePHP5でヘルパーから他のヘルパーを読み込む方法・CakePHP4からの変更点
CakePHP5でヘルパーから他のヘルパーを読み込む方法・CakePHP4からの変更点

CakePHP5のヘルパーで他のヘルパーを読み込む方法を解説。公式の日本語CookbookはCakePHP4のソースのままで間違っているため注意が必要。CakePHP4からの移行の際も同じ点に注意が必要。