2011-07-29 45 views
1

我仍然在學習製作Joomla組件,但是我遇到了一種情況,在任何教程或書籍中我都找不到答案至今。 我有一個模型(在models/weather.php中),它有一個方法getData()。這個方法是從View(在views/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。佈局應僅通過視圖(view.html.php)顯示模型中已檢索和處理的數據。你爲什麼不在你的模型中添加另一種方法並從getData調用該方法?這會好得多。

+0

謝謝,這是答案的一部分。你讓我走上正軌。 – Peter

+0

不客氣 –

0

你可以在你的其他模型中編寫一個方法,從你想要的數據如getMyItem()中提取數據。然後,在你看來,你需要得到模型像

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

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

寫邏輯模型的方法

+0

我假設你的意思是'佈局',你說'視圖'?在MVC哲學中這會被認爲是否可行?我假設這個「不允許」在佈局中像這樣實例化? – Peter

+0

我的意思是,如果你在佈局中編寫你的邏輯將是荒謬的。即在MVC我的意思是V.在Joomla不是default.php,但view.html.php – Ehtesham