2017-08-28 20 views
0

私はCakePHPで働いています。 beforeSave()では、データベースの列の値を保存しようとしている更新された列の値と比較しています。このデータをafterSave()コールバックに渡して、コールバックが何をするかを確認します。 beforeSave()からafterSave()にデータを渡す方法はありますか?cakePHPのbeforeSave()からafterSave()にデータを渡す方法はありますか?

答えて

0

私は、具体的cakePHPで働いていないが、それはいくつかの他のMVCフレームワークに似ていた場合、beforeSave()afterSave()コールバックは、同様のコンテキストで実行されている(彼らは同じオブジェクトに属している - モデルやコントローラ)。

この場合、単純な解決策は、カスタムクラスプロパティを使用してデータを追跡することです。

private $custom; 

beforeSave(){ 
    // save what you want to access later 
    $this->custom = 'comparison result'; 
} 

afterSave(){ 
    // retrieve what we found in beforeSave() 
    $custom = $this->custom; 
} 
+0

素晴らしいです!ありがとうございました! –

0

あなたは、コールバックモデルのsave(array $data = null, array $params = array())機能からbeforeSave(array $options = array())afterSave(boolean $created, array $options = array())に引数を渡すことができます。ここで

は例

//In your controller 
$this->Post->save($data, array('arg1' => $value)); 

//In the Post Model 
beforeSave($options = array()){ 
    // $options contains the arg1 param 
} 

afterSave($created, $options = array()){ 
    // $options contains the arg1 param 
} 

それを試してみてください:)

関連する問題