バリデーション前後に処理を追加できる「beforeValidate」「afterValidate」
CakePHPでは、「beforeValidate」「afterValidate」というバリデーション処理の前後で追加の処理を実装できるコールバック関数が用意されています。
beforeValidate
beforeValidateは見たままですがバリデーション処理の直前に何かしらの処理を追加することができます。
// 例:先頭と末尾の全角・半角スペースをtrimする処理
public function beforeValidate() {
array_walk( $this->data[$this->name], function( &$item) {
$item = preg_replace( '/^[ ]+/u', '', $item);
$item = preg_replace( '/[ ]+$/u', '', $item);
});
}
afterValidate
こちらもそのままですがバリデーションの直後・save処理前(もっと細かく言うとのコールバックbeforeSaveの直前)に処理を追加することができます。バリデーションOKの場合やNGの場合などに分けて使用すると便利かもしれません。
分けたい場合は、色々やり方はあるようですが、以下のように場合分けすることで可能です。
function afterValidate( $options) {
if( $this->validationErrors) {
// バリデーションNGの場合に行う処理
} else {
// バリデーションOKの場合に行う処理
}
}
関連記事
-
-
Js/Cssファイルの読み込みや出力する方法
CakePHPのHTMLヘルパーにはjsファイルやcssファイルを読み込むためのメソッドが用意されています。ファイルを読み込むのに加えて、出力先を複数指定できるようになっています。 また、インライン
-
-
RSSフィードの取得
コンロトーラ public function getrssfeed() { try { $newsItems = $this->Rss->read( 'http://
-
-
複数ファイルアップロードフォーム
CakePHP 2.0からはHTML5が標準でサポートとなり、複数ファイルアップロードのためのフォーム記述が容易になりました。 View (ビュー) 配列 Array (
-
-
独自のバリデーションルールを作成
CakePHPで組み込みバリデーションルールをつくる方法は、正規表現を定義する方法と独自メソッドを定義する方法の2つがあるようです。 参考 Custom Validation Rules 正規
-
-
CakeEmailでメール送信(@gmail)
CakePHP 2になって追加されたクラスCakeEmailがシンプルに使えます。これを使用してメール送信を行う処理を実装してみました。 CakeEmailクラスの読み込み /app/Config
-
-
日付・時間のバリデーション
日付や時刻に関するバリデーションは以下のルールがビルトインされています。 date 日付 time 時刻 datetime 日時 (m:「月」を数字表記 / M:「月」を英語表記)
-
-
ネストしたリストを出力「nestedList」
DBやJSONからデータを取得して、そのデータをもとにメニュー表示などネストしたリストを出力させたい場合に「nestedList」が便利です。 ヘルパーに渡すデータは連想配列である必要があります。(
-
-
HttpSocketを使用してリクエスト送信
CakePHPには、Webサービスへのリクエスト送信のためのHttpSocketクラスが用意されています。 HttpSocket get HTTP GETリクエストを発行します。デモ H
-
-
バリデーションエラーメッセージの取得
CakePHP 2.xになってバリデーションエラー時に返却されるメッセージのデータ形式が変更になったようです。1.3系では、ひとつのフィールドに対して返却されるメッセージは一つのルールのみですが、2.
-
-
recursive設定によるfind()性能改善
CakePHPでは、モデルにアソシエーションを設定している場合、recursive(=>joinする階層)はデフォルトで0に設定されています。「recursiveゼロ」の意味するところとは、「1跨ぎま
- PREV
- Railsの実装~アプリケーションの作成まで
- NEXT
- ユーザ作成と権限設定


Comment
バリデーション前後に処理を追加できる「beforeValidate」「afterValidate」 http://t.co/KLZqffFk2a CakePHP 2.x **ブログ投稿