1.9 Hello World添加model

(1)模型是用来管理数据的,他返回数据给调用者,所以第一个必须实现的函数是get.

在这个例子中调用者是HelloWorldViewHelloWorld.

site/models/helloworld.php

<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
 
// import Joomla modelitem library
jimport('joomla.application.component.modelitem');
 
/**
 * HelloWorld Model
 */
class HelloWorldModelHelloWorld extends JModelItem
{
    /**
     * @var string msg
     */
    protected $msg;
 
    /**
     * Get the message
     * @return string The message to be displayed to the user
     */
    public function getMsg() 
    {
        if (!isset($this->msg)) 
        {
            $this->msg = 'Hello World!';
        }
        return $this->msg;
    }
}

(2)HelloWorldViewHelloWorld类通过get方法获取数据

site/views/helloworld/view.html.php

<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
 
// import Joomla view library
jimport('joomla.application.component.view');
 
/**
 * HTML View class for the HelloWorld Component
 */
class HelloWorldViewHelloWorld extends JView(JViewLegacy)
{
    // Overwriting JView display method
    function display($tpl = null) 
    {
        // Assign data to the view
        $this->msg = $this->get('Msg');
 
        // Check for errors.
        if (count($errors = $this->get('Errors'))) 
        {
            JLog::add(implode('<br />', $errors), JLog::WARNING, 'jerror');
            return false;
        }
        // Display the view
        parent::display($tpl);
    }
}

$this->get() 是JView ::get (JViewLegacy::get),  它是一个委托,获得默认model类中的对应方法。

(3)修改helloworld.xml 指明使用了模型和视图,并且修改版本号

<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="2.5.0" method="upgrade">
 
    <name>Hello World!</name>
    <!-- The following elements are optional and free of formatting constraints -->
    <creationDate>November 2009</creationDate>
    <author>John Doe</author>
    <authorEmail>john.doe@example.org</authorEmail>
    <authorUrl>http://www.example.org</authorUrl>
    <copyright>Copyright Info</copyright>
    <license>License Info</license>
    <!--  The version string is recorded in the components table -->
    <version>0.0.4</version>
    <!-- The description is optional and defaults to the name -->
    <description>Description of the Hello World component ...</description>
 
    <update> <!-- Runs on update; New in 2.5 -->
        <schemas>
            <schemapath type="mysql">sql/updates/mysql</schemapath>
        </schemas>
    </update>
 
    <!-- Site Main File Copy Section -->
    <!-- Note the folder attribute: This attribute describes the folder
        to copy FROM in the package to install therefore files copied
        in this section are copied from /site/ in the package -->
    <files folder="site">
        <filename>index.html</filename>
        <filename>helloworld.php</filename>
        <filename>controller.php</filename>
        <folder>views</folder>
        <folder>models</folder>
    </files>
 
    <administration>
        <!-- Administration Menu Section -->
        <menu>Hello World!</menu>
        <!-- Administration Main File Copy Section -->
        <!-- Note the folder attribute: This attribute describes the folder
            to copy FROM in the package to install therefore files copied
            in this section are copied from /admin/ in the package -->
        <files folder="admin">
            <!-- Admin Main File Copy Section -->
            <filename>index.html</filename>
            <filename>helloworld.php</filename>
            <!-- SQL files section -->
            <folder>sql</folder>
        </files>
    </administration>
 
</extension>

最后打包安装。

posted @ 2015-08-29 20:36  codergma  阅读(314)  评论(0编辑  收藏  举报