2010-07-23 6 views
1

ClearCache 동작을 작성 중입니다.동작 내부에서 컨트롤러 이름 가져 오기

모델의 afterSave 및 afterDelete 이벤트마다 맞춤 캐시 파일 일부를 삭제하는 것이 그 목적입니다. 어떻게 사람들을 얻는 방법 : 바로 내가 컨트롤러의 이름을 알 필요가 파일과 (저장 ModelWithClearCacheBehavior->라는 액션의 이름) 또는 ModelWithClearCacheBehavior->

내 질문은() 삭제를 삭제하기 위해

행동 내부의 이름?

답변

1

이것에 대한 우아한 해결책은 없습니다 (적어도 나는 모른다).

당신은 예를 들어, 구성 : 쓰기 클래스와 함께 할 수 있습니다 : 당신의 AppController의으로, beforeFilter (에

) 다음과 같은 코드를 추가 할 수 있습니다 : 당신은에 액세스 할 수 있습니다 당신의 행동에 나중에

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

을 그들과 함께

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

어떤 모델 반복 전에 그들을 설정하기 때문에 액세스 할 수 있습니다.

확실히 우아한 것은 아니지만 효과가 있습니다.

0

하지 뭔가가 나는 정말 아무것도 수행하지만,이 책의 간단한 독서는 모델이 행동 안에 있습니다 (또는이어야한다)을 나타냅니다 것 한 - 행동 방법을 만들 때

하면 자동으로 얻을 수 호출 모델의 참조를 첫 번째 매개 변수로 전달했습니다. 다른 모든 매개 변수는 오른쪽으로 한 자리 이동합니다.

그런 다음 $Model

+0

미안, 내 뇌는 어딘가에 있었어. 당신은 모델에 대해 신경 쓰지 않습니다. – Leo

+0

아마 Nik이 제안한 것처럼 끝낼 것이라고 생각하지만 세션 변수를 작성하는 편이 낫습니다. – Leo

0

를 통해 모델에 액세스 할 수 있어야이 (CakeRequest 사용) 행동이 방법을 수행 할 수 있습니다 CakePHP는 2.0, 늦었지만 향후 참조를 위해 조금이다

beforeFind(&$model, $query){ 
    global $Dispatcher; 
    $request = new CakeRequest(); 
    $request = $Dispatcher->parseParams($request, $additionalParams = array()); 
    pr($request->params->controller); 
    return $query; 
}