【CakePHP】データベースへのsave前にデータを編集するには?

データベースへsave, 送信する前に
フォームの入力内容を編集したいときってあると思います。

例えば入力フォームをデフォルトからいじったとかで、
入力内容のフォーマットとデータベースのカラムの型が合わなくなってしまった場合なんかが考えられます。

 

こういった場合はモデルの中に
beforeSaveという関数を定義することで解決できます。

beforeSaveはモデルの内容に関する処理の前後で呼び出される
コールバック関数の一つです。

他にもafterSaveといったものや、findやdeleteなどの前後で呼び出される関数があります。

 

使い方はこんな感じです。

```php
<?php
class Item extends AppModel {

public function beforeSave($options = array()) {
$this->data["Item"]["date"] = $this->formatDate($this->data["Item"]["date"]);

return true;
}


public function formatDate($date){
// 何かしらの処理
return $date;
}
}


```

注意すべき点は最後にreturn trueすることです。
trueが返されないとsaveが行われなくなってしまいます。