2010-06-17 44 views
1

好的,所以我的Joomla應用程序是以MVC格式。在Controller或Model中,我對將某些操作放在哪裏有點困惑。下面的這個函數在控制器中,當&task=remove被調用。數據庫的東西應該在模型中?它似乎不適合那裏,因爲我有兩個模型editapp(顯示一個應用程序)和allapps(顯示所有應用程序),現在哪一個我會把刪除操作?對MVC和數據庫查詢的位置有點困惑

/** 
* Delete an application 
*/ 
function remove() { 
    global $mainframe; 

    $cid = JRequest::getVar('cid', array(), '', 'array'); 
    $db =& JFactory::getDBO(); 

    //if there are items to delete 
    if(count($cid)){ 
     $cids = implode(',', $cid); 
     $query = "DELETE FROM #__myapp_apps WHERE id IN ($cids)"; 
     $db->setQuery($query); 

     if (!$db->query()){ 
      echo "<script> alert('".$db->getErrorMsg()."');window.history.go(-1); </script>\n"; 
     } 
    } 

    $mainframe->redirect('index.php?option=' . $option . '&c=apps'); 
} 

我也對流程是如何工作感到困惑。例如,在默認情況下調用的控制器中有一個display()函數。如果我傳遞一個任務,那麼display()函數是否仍然運行,或者直接轉到由$ task傳遞的函數名稱?

+0

關於你對我的回答的評論,你說得很對。我愚蠢地回答,沒有考慮到Joomla的模式可能與我使用其他技術所看到的不同。我已經刪除了我的答案,這樣就不會讓任何人誤入歧途。如果你還沒有看到它,這是一個關於如何在joomla中創建一個mvc組件的指南,也許可以幫助你:http://www.vojtechovsky.net/joomla/component-helloworld-2-create-tutorial- guide-en.html。對於錯誤信息抱歉。 – 2010-06-17 09:43:23

回答

1

我會盡量保持模型中的所有數據庫功能。如果您不知道某種方法應該採用哪種模型,則可能需要更改模型以更好地反映問題。

就你而言,我認爲這個方法會在allapps中使用,因爲它可以處理多個應用程序的操作。

如果您傳遞任務,則會調用該方法。如果你想然後調用顯示方法,只需在編輯方法結束時調用它。

如有疑問,請查看網站鏈接組件的型號和控制器。他們非常簡單,並且是Joomla!中MVC的一個很好的例子。