2012-12-13 11 views
19

CakePHP의 구성 요소에서 모델을 사용하려면 어떻게해야합니까?구성 요소에서 모델 사용

컨트롤러에서

당신은

public $uses = array(...); 

를 사용할 수 있지만 그 구성 요소에서 작동하지 않습니다.

무엇이 있습니까?

$result= $model->find('all'); 

답변

32

이 코드를 시도

$this->ModelName = ClassRegistry::init('ModelName'); 

을하지만 돈을 생각한다 모델 내부에서 모델을 사용하지 마십시오.

+0

이 작동, 당신은 welocome이 – AgeDeO

+0

감사합니다 : 당신이 내 목숨을 구해 D : D –

+0

더 나은'Yourmodel' (대문자) – mark

13

당신은 그것을 이런 식으로 할 수있는 구성 요소로 모델

$model = ClassRegistry::init('Yourmodel'); 

간단한 쿼리 :

+0

당신이 조언 구성 요소의 내부 모델을 사용하지 않는 이유는 무엇입니까? –

+0

구성 요소에서 둘 이상의 모델을 사용하기 시작하면 비헤이비어를 사용하는 것이 좋습니다. – Alvaro

+2

그것은 항상 특정 유스 케이스에 달려있다. 그러나 질문은 너무 많이 드러내지 않습니다. – mark

2

현재 모델이 필요한 경우 구성 요소의 initialize() 또는 startup() 콜백을 사용할 수 있습니다.

public function initialize(Controller $controller) { 
    $this->Controller = $controller; 
    $this->Model = $this->Controller->{$this->Controller->modelClass}; 
    $this->modelAlias = $this->Model->alias; 
    parent::initialize($controller); 
} 

이제 구성 요소의 모든 곳에서 모델에 액세스 할 수 있습니다.

public function countAllItems() { 
    return $this->Model->find('count'); 
} 
관련 문제