什么是joomla 2.5中的assignRef()函数

时间:2013-02-13 13:50:31

标签: joomla joomla2.5 joomla-extensions

我试图了解如何在joomla 2.5中开发自定义组件,在第一步我遇到困难,我想知道什么是使用assignRef()函数和更多信息click here

<?php
/**
 * @package    Joomla.Tutorials
 * @subpackage Components
 * @link http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_1
 * @license    GNU/GPL
*/

// no direct access

defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.application.component.view');

/**
 * HTML View class for the HelloWorld Component
 *
 * @package    HelloWorld
 */

class HelloViewHello extends JView
{
    function display($tpl = null)
    {
        $greeting = "Hello World!";
        $this->assignRef( 'greeting', $greeting );

        parent::display($tpl);
    }
}

在assignRef()函数中,第一个参数充当变量而不是值,因为如果我将其值更改为其他值,则无法显示$ greeting的值: -

http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_1      * @license GNU / GPL     * /

// no direct access

defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.application.component.view');

/**
 * HTML View class for the HelloWorld Component
 *
 * @package    HelloWorld
 */

class HelloViewHello extends JView
{
    function display($tpl = null)
    {
        $greeting = "Hello World!";
        $this->assignRef( 'greeting123', $greeting );

        parent::display($tpl);
    }
}

然后在site / views / hello / tmpl / default.php中,如果我这样写,那么它会显示正确的答案: -

<?php

// No direct access

defined('_JEXEC') or die('Restricted access'); ?>
<h1><?php echo $this->greeting123; ?></h1>

然后结果将是:---- Hello world

我知道,对你而言,这是一个简单或天真的问题,但对我来说,这是我自己的发展领域新时代的开始。任何事情都会受到最多的赞赏..

2 个答案:

答案 0 :(得分:3)

在Joomla 1.5中,有两个函数assign()assignRef()用于将数据从视图传递到布局。但是从Joomla 1.6及更高版本开始,只需将数据添加到视图中即可object.since Joomla 1.6 / 2.5 至少需要 PHP 5.2 ,它具有更好的内存管理,这是引入这两种方法的主要原因。那两个 方法是通过引用而不是值来分配变量。的 PHP4 默认情况下使用按值分配,而 PHP5 (使用对象时)使用 通过引用分配。

如果您使用的是Joomla最新版本,您可以通过添加

来实现

$this->variable = $something;

在您的view.html.php中,它将在布局中提供。

答案 1 :(得分:1)

assignRef()函数向视图添加变量。所以它可以通过视图类访问。资料来源:here

但是,我建议您按照Joomla 2.5 here的扩展创建教程而不是您正在使用的1.5教程,以便不使用已弃用的函数。例如,在Joomla 2.5中,不再需要assignRef()。模型从表中检索数据,所需的只是

$this->items = $items;