1

ClearCache の動作を書いています。

その目的は、モデルの afterSave および afterDelete イベントごとにカスタム キャッシュ ファイルの一部を削除することです。

適切なファイルを削除するには、コントローラーの名前と、ModelWithClearCacheBehavior->save() または ModelWithClearCacheBehavior->delete() を呼び出したアクションの名前を知る必要があります。

私の質問は次のとおりです。これらの名前を動作内に取得するにはどうすればよいですか?

4

3 に答える 3

2

これに関するエレガントな解決策はありません(少なくとも私は知りません)。

たとえば、Configure::write クラスを使用して実行できます。

AppController の beforeFilter() に次のコードを追加できます。

Configure::write('current_controller', $this->name);
Configure::write('current_action', $this->action);

後であなたの行動であなたはそれらにアクセスすることができます

Configure::read('current_controller');
Configure::read('current_action');

モデルの反復の前にそれらを設定するため、アクセスできます。

確かにエレガントではありませんが、機能しています。

于 2010-07-23T12:51:43.353 に答える
0

これは少し遅れていますが、将来の参考のために、cakephp 2.0 では動作でこの方法を実行できます (CakeRequest を使用)

 beforeFind(&$model, $query){
  global $Dispatcher;
  $request = new CakeRequest();
  $request = $Dispatcher->parseParams($request, $additionalParams = array());
  pr($request->params->controller);
  return $query;
 }
于 2011-09-08T09:51:30.487 に答える
0

私が実際に何もしたことはありませんが、本を簡単に読むと、モデルがビヘイビア内で利用可能である (または利用可能である必要がある) ことが示されているようです-

動作メソッドを作成すると、呼び出し元のモデルの参照が最初のパラメーターとして自動的に渡されます。提供された他のすべてのパラメータは、1 つ右にシフトされます

その後、次の方法でモデルにアクセスできるはずです$Model

于 2010-07-23T13:48:07.570 に答える