好的,所以我的Joomla应用程序是MVC格式。我仍然对在控制器或模型中放置某些操作的位置感到困惑。下面的这个函数在控制器中,它在&task=remove
时被调用。数据库的东西应该在模型中吗?它似乎不适合那里,因为我有两个模型 editapp (显示单个应用程序)和 allapps (显示所有应用程序),现在哪一个我将删除在?
/**
* 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 :(得分:1)
我会尝试在您的模型中保留所有数据库功能。如果您不知道方法应该采用哪种模型,则可能需要更改模型以更好地反映您的问题。
但是,在你的情况下,我认为这种方法可以用于allapps,因为它可以处理多个应用程序的操作。
如果您传入任务,则会调用该方法。如果您想再调用display方法,只需在编辑方法结束时调用它。
如有疑问,请查看网络链接组件的模型和控制器。它们非常简单,是Joomla中如何做MVC的好例子。