0

我对 Joomla 以及他们实现 MVC 架构的方式相对较新。它与我习惯的方式(Code Igniter 等)略有不同,我在将数据传递给视图时遇到了一些问题。

我在控制器中创建了一个名为“getInitClubs”的函数,它会在页面运行时自动运行,因此我从“view.html”文件中调用了这个函数。

这是我的代码:

控制器功能:

public function getInitClubs() {
        $model =& $this->getModel('directory');
        $init_clubs = $model->clubResults($conds = array());
        return $init_clubs;
    }

型号功能:

public function clubResults($conds) {
    $query = "SELECT * FROM vyj20_contact_details";
    if(isset($conds['city'])) {
        $query .= " WHERE state = '" . mysql_escape_string($conds['city']) . "'";
    }
    if(isset($conds['suburb'])) {
        $query .= " AND suburb = '" . mysql_escape_string($conds['suburb']) . "'";
    }
    $this->_db->setQuery($query);
    $results = $this->_db->loadObjectList();
    return $results;
}

现在我知道模型和控制器代码有效,这不是问题,问题实际上是从控制器函数“getInitClubs”中提取结果并通过视图显示它们。

如何从视图中调用控制器函数(就像在 Code Igniter MVC 上一样)以收集结果进行显示?我已经尝试过,但似乎无法弄清楚!谢谢

4

2 回答 2

1

JView实例有getModel()方法。您将获得访问静态注册表的模型实例,该注册表在所有组件之间共享。在这种JController情况下,您应该更改该模型的状态,在这种JView情况下,您应该提取数据。

MVC 设计模式中的视图应该从模型层获取信息并使用模板渲染它,或者在某些情况下只发送一个简单的 HTTP 标头。在这方面,Joomla 对 MVC 模式有着令人惊讶的出色表现。

PS自 PHP 5.0 发布以来(大约在 2005 年左右),您在分配对象时不需要使用引用。它实际上是有害的,因为它与refcount 混淆了。

于 2012-10-31T14:31:17.883 回答
0

你的控制器功能应该是这样的。

$model =& $this->getModel('directory');
$init_clubs = $model->clubResults($conds = array());
$view = $this->getView('view_name', 'html'); // get the view
$view->assignRef('data_list', $init_clubs); // set the data to the view
$view->display(); // show the view

阅读更多

开发模型-视图-控制器组件

模型-视图-控制器

开发模型-视图-控制器组件/

模型视图控制器

于 2012-11-01T08:59:29.773 回答