繁体   English   中英

在视图和控制器之间传递的Joomla组件MVC变量

[英]Joomla Component MVC variable passing between View and Controller

对于Joomla以及它们实现MVC体系结构的方式,我才是新手。 它与我的习惯(代码点火器等)略有不同,并且我在将数据传递到视图时遇到了一些问题。

我在控制器中创建了一个名为“ 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上那样)以收集显示的结果? 我已经尝试了很多,但似乎无法弄清楚! 谢谢

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

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

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

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

$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

阅读更多

开发模型视图控制器组件

模型视图控制器

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

模型视图控制器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM