2010-01-17 6 views
0

질문이 있는데, CakePHP 구성 요소를 만드는 중에 문제가있을 수도 있습니다. 기본적으로, 나는 내 레이아웃 (사이드 바 통계 등)에서 사방에 액세스 할 수있는 몇 가지 쿼리를 구현해야합니다.CakePHP : 컴포넌트에서 쿼리 하시겠습니까?

구성 요소에서 쿼리하려고하면 개체가 아닌 함수를 호출 할 때 오류가 발생합니다.

젠장, 아무도 나에게 이것을 설명 할 수 있습니까?

건배!

+0

정확히 오류 또는 오류가 발생한 코드를 사용할 수 있습니다.) –

답변

3

이런 식으로하고 있습니까?

class MyComponent extends object { 
    function startup(&$controller) { 
    $this->controller = $controller; // Stores reference Controller in the component 
    } 
    function common() { 
    $data = ClassRegistry::init('MyModel')->myQuery(); // Call the query on the model 
    $this->controller->set(compact('data')); // Sets data from myQuery in view 
    } 
} 
+0

+1이 솔루션은 모델을로드 할뿐만 아니라 인스턴스화하기 때문에 내 솔루션보다 낫습니다. 나는 내 자신의 대답을 줄 때 그것을 잊었다. –

+0

성모님! 이것이 내가 원하는거야! 고마워요! – Johannes

0

박동의 소리가 날 위험이 있으므로,이 작업을 통해 엄청나게 MVC를 위반하게됩니다. 괜찮 으면 App::import()을 사용하여 앱의 어느 곳에서나 모델을로드 할 수 있습니다 (http://book.cakephp.org/view/531/Importing-Controllers-Models-Components-Behaviors-).

MVC 구조를 유지하려는 시도에 관심이 있으시면 해당 일반적인 방식으로 실행해야하는 쿼리에 대한 추가 정보를 제공 할 수 있습니다.

+1

롭, 나는 이것을 시험해 보았지만, 나는 일사병을 일으킬 필요가 있었다. 매 시간마다 나는 CakePHP에 대해 새로운 것을 배웠다. – Johannes

+0

여기서 우리가하는 일은 cakePHP와 좋은 구조를 사용하여 응용 프로그램 전체에 사용되는 격리 된 테이블을 추가하는 것인데 응용 프로그램의 흐름이나 로직의 일부가 아니라고 생각한다. 통계 표가 이에 대한 좋은 예입니다. – mna