2011-07-29 6 views
1

나는 Joomla 구성 요소를 만드는 법을 배우고 있습니다. 그러나 나는 읽은 튜토리얼이나 책에서 대답을 찾을 수없는 상황에 처했습니다. 지금까지. getData() 메서드가있는 Model (models/weather.php)이 있습니다. 이 메소드는 View (view/view.html.php에서)에서 호출되며 이것은 내 데이터베이스의 레코드 범위를 가져옵니다. 는 기록이 범위 다음 내 레이아웃이 같은 (뷰/tmpl/default.php)는 foreach 루프를 사용하여 뭔가를 통해 반복된다어떻게하면 Joomla 구성 요소의 레이아웃 내부에서 SQL 쿼리를 실행합니까

if ($this->item) { 
    foreach ($this->item as $item) { 
     //... 
    } 
} 

내가 뭘해야 (주석의 시점에서 // ...) $ item-> id 값을 기반으로 다른 테이블에서 다른 레코드를 가져 오려고합니다. 내 질문은 모범 사례에 따라 어떻게해야합니까? 난 그냥 바로 거기에 데이터베이스를 열어 내가 필요한 데이터를 얻을 수있을 것 같아요하지만 MVC 기반 프로그램 에서이 쿼리를 함수 또는 메서드에 넣어 필요가 의심되는가요? 어디에 넣고 어떻게 접근합니까? 예제에 대한 링크는 많은 도움이 될 것입니다.

답변 : 나는 그런 바보입니다. 분명히 내 레이아웃의 뷰에서 모든 메서드를 호출 할 수 있으며이 메서드에서 모델 (조회 기능을 만들 수있는 곳)에 액세스 할 수 있습니다. 때로는 내 마음이 (여전히) OOP를 단순히 '볼'수있는 너무 절차 적입니다.

답변

0

레이아웃 (default.php)의 데이터를 처리하는 나쁜 관행에 Myitem를 얻을 수

$model = & JModel::getInstance('ModelName','ComponentNameModel'); //it will look for ComponentNameModelModelName 

    $myitem = $model->getMyItem($item->id); 

쓰기 로직과 같은 모델을 얻을 필요가있다. 레이아웃은 뷰 (view.html.php)를 통해 모델에서 이미 검색되고 처리 된 데이터 만 표시해야합니다. 모델에 다른 메소드를 추가하고 그 메소드를 getData에서 호출하지 않는 이유는 무엇입니까? 훨씬 나아질 것입니다.

+0

입니다. 감사합니다. 그 대답의 일부입니다. 너는 나를 올바른 길로 인도했다. – Peter

+0

당신은 환영합니다. –

0

getMyItem()과 같은 데이터를 가져 오려는 다른 모델에서 메소드를 작성할 수 있습니다. 그런 다음보기에 당신은 모델의 방법

+0

'보기'를 말한 '레이아웃'을 의미한다고 가정합니다. 그것은 MVC 철학에서 괜찮은 것으로 간주 될 것입니까? 이 레이아웃에서 이렇게 인스턴스화하는 것을 "거부"한다고 가정했습니다. – Peter

+0

내 생각에는 레이아웃에 논리를 쓰는 것은 어리 석다. 즉 MVC에서 나는 V를 의미합니다. Joomla에서는 default.php가 아니지만 view.html.php는 – Ehtesham

관련 문제