2015年12月4日金曜日

CakePHP 3で、バリデーション(validation)の前にデータのトリム(trim)

CakePHP 3で、バリデーション(validation)の前にデータのトリム(trim)です。Model.beforeMarshalイベントは、バリデーションの前に呼ばれるとのこと。これを設定しておかないと、半角スペースでもnotEmptyのバリデーションルールが通ってしまいます。

src/Model/Table/ArticlesTable.php
use Cake\Event\Event;
use ArrayObject;

class ArticlesTable extends Table
{
  // データのトリム
  public function beforeMarshal(Event $event, ArrayObject $data, ArrayObject $options)
  {
    foreach ($data as $key => $value) {
      if (is_string($value)) {
        $data[$key] = trim($value);
      }
    }
  }
}

実際に設定してみたサイトがこちら

参考サイト
Saving Data (CakePHP Cookbook 3.x documentation)
How to use Trim() before validation NotEmpty?(Stack Overflow)

0 件のコメント:

コメントを投稿