0

カスタムコンポーネントを開発しました。当初、Joomla 1.5 には、テーブルからテンプレートにデータを送信するデータ配列があります。

class MyComponentClass extends JModel{

    /**
     * MyComponentClass data array for tmp store
     *
     * @var array
     */
    private $_data;
    /**
     * MyComponentClass data array for tmp store
     *
     * @var array
     */
    private $_mine;

    /**
     * Gets the data
     * @return mixed The data to be displayed to the user
     */
    public function getData(){
        if (empty( $this->_data )){
            $id = JRequest::getInt('id',  0);
            $db =& JFactory::getDBO();
            $query = "SELECT * FROM `#__tourinfo` where `id` = {$id}";
            $db->setQuery( $query );
            $this->_data = $db->loadObject();
        }
        return $this->_data;
    }

    public function getMine(){
        if (empty( $this->_mine )){
            $recordSet =& $this->getTable('mytable');
            $db =& JFactory::getDBO();
            $query = 'SELECT * FROM `#__mytable` WHERE ' . (isset($recordSet->published)?'`published`':'1') . ' = 1 ORDER BY `id` ';
            $this->_mine = $this->_getList( $query, $this->getState('limitstart'), $this->getState('limit') );
        }   
        return $this->_mine;
    }   

}

ドキュメントによると、テンプレートに情報を送信する $_data 配列のみを見てきました。

このモデルは、単一レコード ビューのデータを送信します。

他のテーブルには、このレコードに関連付けられているデータがあります。

テンプレートにデータを受信しようとすると、foreach にデータが提供されていないというエラーが表示されます。

おそらく誰かがこの場合の解決策を知っています。

前もって感謝します!

4

1 に答える 1

1

テンプレートが必要とするデータを yourcomponent/view/yourview/view.html.php ファイルに割り当てます。

参照してください:

http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_1

以下は、view.html.php ファイルの典型的なメソッドの例です。

function listItems()
{
    $model = &$this->getModel('yourmodel');
    $items = $model->getItems();
    if ($items) {
            $this->assignRef( 'items', $items );
    }

    parent::display($tpl);
}

上記のコードの割り当てに注意してください。

$this->assignRef( 'items', $items );

次に、テンプレートで $this->items を呼び出して、foreach でループすることができます。

お役に立てれば。

于 2012-04-16T15:35:55.357 に答える