1

私はjoomla2.5でカスタムコンポーネントを開発する方法について理解しようとしていますが、最初のステップで行き詰まり、assignRef()関数の使用とは何かを知りたいのですが、詳細についてはここをクリックしてください

<?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

あなたにとってそれは単純な質問または素朴な質問であったことを私は知っていますが、私にとってそれは私自身の開発分野における新しい時代の始まりです。

4

2 に答える 2

3

Joomla 1.5には2つの機能がありassign()assignRef()ビューからレイアウトにデータを渡すために使用されますが、Joomla 1.6以降では、データをビューオブジェクトに追加するだけで実行されます。Joomla1.6 /2.5には少なくともPHP5.2が必要なので、これははるかに優れたメモリ管理を備えており、これがこれら2つの方法が導入された主な理由です。これらの2つの方法は、値ではなく参照によって変数を割り当てています。PHP4 はデフォルトで値による割り当てを使用しますが、PHP5(オブジェクトを使用する場合)は参照による割り当てを使用します。

Joomlaの最新バージョンを使用している場合は、

$this->variable = $something;

で、view.html.phpそれはレイアウトで利用できるようになります。

于 2013-02-13T14:31:40.053 に答える
1

このassignRef()関数は、ビューに変数を追加します。したがって、ビュークラス全体でアクセスできます。出典:こちら

ただし、非推奨の関数を使用しないように、使用している1.5 チュートリアルではなく、Joomla 2.5 の拡張機能作成チュートリアルに従うことをお勧めします。たとえば、Joomla 2.5 では assignRef() は不要になりました。モデルはテーブルからデータを取得し、必要なのは単純です

$this->items = $items;
于 2013-02-13T14:27:21.800 に答える