2013-02-13 40 views
1

我想了解如何在joomla 2.5中開發自定義組件,並且在第一步中卡住,我想知道什麼是使用assignRef()函數和for更多信息click here什麼是joomla 2.5中的assignRef()函數2.5

<?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()函數,第一個參數作爲變量不是一個值,因爲如果我改變它的價值,那麼一些其他的事情是不能夠顯示$問候的值: -

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

// 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); 
    } 
} 

然後在網站/視圖/你好/ TMPL /如default.php,如果我寫這樣的,然後它顯示我正確的答案: -

<?php 

// No direct access 

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

那麼結果將是:----你好世界

我知道,對你而言,這是一個簡單或天真的問題,但對我來說,這是我自己發展領域的新時代的開始..任何事情都會受到最大的讚賞。 。

回答

1

assignRef()函數爲視圖添加一個變量。所以它可以通過視圖類訪問。來源:here

但是,我可以建議您遵循Joomla 2.5 here的擴展創建教程,而不是您正在使用的1.5教程,以便您不使用棄用的函數。例如在Joomla 2.5中,assignRef()不再需要。該模型從表中檢索數據和所需要的所有僅僅是

$this->items = $items; 
2

在的Joomla 1.5,有兩個功能assign()assignRef()被用於從一個視圖從的Joomla 1.6和傳遞數據到layout.But在它剛剛通過添加數據到視圖對象完成。自從Joomla 1.6/2.5至少需要PHP 5.2,它具有更好的內存管理,這是引入這兩種方法的主要原因。這兩個 方法是通過引用而不是按值分配變量。 PHP4 默認情況下使用按值賦值,而PHP5(使用對象時)使用 通過引用進行賦值。

如果您在使用Joomla最新版本,你可以通過把

$this->variable = $something;

view.html.php做到這一點,它會在佈局中可用。