2011-10-27 1 views
2

컨트롤러가 3 개 있습니다 (Tokens, StoresUsers).cakePHP 함수 복제 또는 외부 컨트롤러 사용? (건조 문제)

토큰은 두 개의 다른 모델과 관련이 있습니다. 각 토큰에는 소유자 유형과 소유자 ID가 있습니다.

사용자 또는 상점을 등록한 사람에게 활성화 링크를 보내는 EmailTokenToUser라는 함수가 User_controller와 Store_controller에 모두 있습니다.

제 질문은 : 토큰에 함수를 전달해야합니까? 그렇다면 어떻게 호출해야합니까? (requestAction은 하나의 함수에 대한 객체를 만드는 나쁜 아이디어입니다.)

아이디어가 있습니까?

답변

2

코드를 다시 사용하려면 컨트롤러가 아닌 토큰의 MODEL로 전달해야합니다. 이것이 유일한 방법이 아니어야하는 방법입니다. 그것을 사용하려면 컨트롤러 내부에 있어도 requestAction을 사용하면 안됩니다 (다시 requestAction을 사용하여 수행 할 수있는 방법입니다). 두 가지 방법으로이 작업을 수행 할 수 있습니다.

App:import('model', Token'); 
Token::myFunction($args); 

또는

$token = ClassRegistry:init('Token'); 
$token->myFunction($args); 

또는

(당신이 컨트롤러 내부에서 그것을 colling 경우 당신은 또한 사용할 수있다) 당신이 토큰 모델 기능에 넣을 경우

$this->loadModel('Token'); 
$this->Token->myFunction($args); 

이것은 . 컨트롤러 방법을 갈와 경우에 당신은

App:import('controller', 'Tokens'); 
TokensController::myFunction($args); 

또는

App:import('controller', 'Tokens'); 
$token = new TokensController(); 
$token->myFunction($args); 

는 희망이 당신을 도와줍니다처럼해야 :)

+0

우수함. tho, 하나의 질문 : 관련이 있다면 모델을로드해야합니까? 그냥 $ this-> LocalModel-> RelatedModel-> function()'할 수 없습니까? – yossi

+1

예, 이미로드되었으므로 그렇게 할 수 있습니다. 작동해야합니다. – api55