• 1.7 HelloWorld 添加视图


    模型: 管理数据

    控制器:执行任务,设置或者获取模型的状态,请求视图显示

    视图:显示被控件选中的内容

    (1)Setting the controller

    JController是一个管理控制器的类, 在site/helloworld.php添加如下代码。

    <?php// No direct access to this file
    defined('_JEXEC') or die('Restricted access');
     
    // import joomla controller library
    jimport('joomla.application.component.controller');
     
    // Get an instance of the controller prefixed by HelloWorld
    $controller= JControllerLegacy::getInstance('HelloWorld');
     
    // Perform the Request task
    $input= JFactory::getApplication()->input;
    $controller->execute($input->getCmd('task')); 
    
    // Redirect if set by the controlle
    r$controller->redirect();
    JControllerLegacy::getInstance('HelloWorld');(注意3.x版本使用的是JControllerLegacy,如果看官网上使用的是JController)
    创建一个名为HelloWorldController的控制器类,Joomla将会在controller.php中查找这个类的声明。
     
    所以在site/controller.php文件中写入下面代码:
    <?php
    // No direct access to this file
    defined('_JEXEC') or die('Restricted access');
     
    // import Joomla controller library
    jimport('joomla.application.component.controller');
     
    /**
     * Hello World Component Controller
     */
    class HelloWorldController extends JControllerLegacy (注意3.x要继承JControllerLegacy)
    {}
    当没有指定task的值时,默认task将会被执行,默认task任务是display,所以在HelloWorldController中创建display方法。
    (2)Setting the view
    当JController想去展示一个view的时候,他将会从目录component/com_helloworld/views/helloworld/目录下查找
    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  extendsJViewLegacy(注意3.x要继承JViewLegacy){
        // Overwriting JView display method
        function display($tpl=null){
        // Assign data to the view
        $this->msg='Hello World';
     
        // Display the view
        parent::display($tpl);
    }}
    JView类的display方法会被JController类的task方法调用,在这个例子中display方法将会显示tmpl/default.php文件。
     
     
    site/views/helloworld/tmpl/default.php
    <?php
    // No direct access to this file
    defined('_JEXEC') or die('Restricted access');
    ?>
    <h1><?phpecho$this->msg;?></h1>
    这个模板文件将会被JView类包含,所以$this指的是HelloWorldViewHelloWorld类。
     
     
    helloworld.xml
    <?xmlversion="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.2</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><schemapathtype="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 -->
    <filesfolder="site"><filename>index.html</filename>
    <filename>helloworld.php</filename>
    <filename>controller.php</filename>
    <folder>views</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 -->
        <filesfolder="admin">
            <!-- Admin Main File Copy Section -->
            <filename>index.html</filename>
            <filename>helloworld.php</filename>
            <!-- SQL files section -->
            <folder>sql</folder>
        </files>
    </administration>
     
    </extension>






  • 相关阅读:
    面向复杂应用,Node.js中的IoC容器 -- Rockerjs/core
    一步步学会用docker部署应用(nodejs版)
    nodeEE双写与分布式事务要点一二
    提升node.js中使用redis的性能
    puppeteer实现线上服务器任意区域截图
    Nodejs“实现”Dubbo Provider
    TypeScript入门教程
    node.js与比特币(typescript实现)
    关于首屏时间采集自动化的解决方案
    回顾2017,未来仍需要不停充电
  • 原文地址:https://www.cnblogs.com/codergma/p/4768117.html
Copyright © 2020-2023  润新知