FuelPHPの公式マニュアルに載って無いけど便利なメソッドを見つけた。
Model::get_diff()と言うメソッドで、現行の1.7devには存在する。
こいつの使い方は、Modelをロードしてから値を書き換えていってget_diffを呼び出すと、Array(0=>オリジナル、1=>変更後)の形を返してくる。
オリジナル・変更後の中はプロパティ名をキーにして値が入っていて、差分があるキーだけが並んだ配列(差分が無ければ空配列が戻る)
Scaffoldで作ったaction_editにちょっと手を加えて
1 2 3 4 5 6 7 8 9 10 |
$t = Model_Test::find(1); $t->name = Input::post('name'); $t->value = Input::post('value'); $d = $t->get_diff(); if(count($d[0])>0){ echo '変更内容:'; foreach($d[0] as $k=>v){ echo("{$k}:{$v} → {$d[1][$k]}"); } } |
こんな感じのコードを実装すると保存前に変更内容を確認するのが超簡単になる。
確認画面の実装とかが超楽になるメソッドなんで活用していきたい。
(445)