官方系列教材 - Joomla模块开发教程

介绍在如何从0开发一个模块

  但这并不是我们想要的效果。 客户的需求:我们要提供两种信息输入的方式,一种是文件,一种是手动输入。那么我们现在就来实现这个要求。

 我们需要给模块增加一些后台配置参数

上面我们提到过xml文件不但和安装程序有关,还能够配置模块。那好,我们修改一下

xml文件。

 <?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="2.5.0" client="site" method="upgrade">
<name>Alarm</name>
<author>min.zhang</author>
<version>1.0.0</version>
<description>显示通知信息的模块</description>
<files>
<filename>mod_alarm.xml</filename>
<filename module="mod_alarm">mod_alarm.php</filename>
<filename>index.html</filename>
<filename>helper.php</filename>
<folder>tmpl</folder>
</files>
<config>
<fields name="params">
<fieldset name="basic">
<field
name="inputModle"
type="radio"
default="0"
label="输入模式"
description="选择信息的输入模式 默认为手动输入">
<option value="0">手动输入</option>
<option value="1">从文件输入</option>
</field>
<field
name="content"
type="text"
label="内容"
description="当模式为手动是此处填写你要输出的信息,当模式为文件时,此处为文件的路径名(mod_alarm/)"
>
</field>
</fieldset>
<fieldset name="advanced">
</fieldset>
</fields>
</config>
</extension>

感觉上面代码没什么好解释的。有几个关键词,<field> <fieldset>  其他的就是一些正常的字段了。还是先来看一下效果

于2014-08-20日修改:在joomla中利用XML产生表单是一种很常见的方法,其中对fields和fieldset这两个标签的理解十分重要。我们可以将fields理解为组,将field理解为单独的一个字段。而fieldset可以将一组相关的field放在一起。这个感觉越说越糊涂了。还是先慢慢理解了。

 现在后台的管理界面已经有了我们的输入模式了。

如果要继续完成我们的模块,那么现在急切需要解决的一个问题就是 如何实现和后台的通信了。

在上面我们提到了有一个helper.php文件,这个文件的作用是取得和分析数据。mod_alarm.php就是从helper.php中获取数据。

我们先看一下helper.php文件:

defined('_JEXEC') or die('can not access this file!');

/**
* helper class for alarm module
*/
class modAlarmHelper
{
         // get param from module param
         function getData($params)
         {
              $showMode = $params->get('inputModel');
              $content = $params->get('content');

              echo "showMode value =".$showMode.";
              echo "content value =".$content.";
          } 
}

关于这段代码的说明:这是一个类的实现文件。类名为modAlarmHelper 。注意,这个名称一般是按照命名规范取的。命名规范为mod+模块的名称+Helper. 不能随便命名

于2014-08-20日修改:这个类的名称是可以任意取的,但建议遵循命名规范。

另外在这个类中只实现了一个函数,getData($params),这个函数接受一个参数。然后调用$params的get方法得到我们在后台配置的值。并且将值输出。

很明显这只是一个类。那么我们应该在什么地方使用这个类呢?上面已经提到。mod_alarm.php是这个模块的入口点文件,由他来完成helper类和模块模版(default.php)之间的联系

看一下 mod_alarm.php文件:

 // no direct access

defined('_JEXEC') or die;

 

// Include the syndioate function only once
require_once(dirname(__FILE__).DS.'helper.php');

 

// new a obj
$obj = new modAlarmHelper();
$obj->getData($params);

在解释上面的代码之前,我们先看一下执行的效果:

后台的设置:

前台执行效果:

很明显,我们成功的从后台得到模块的设置参数了,并且在前台也正确输出了。 

再来分析一个mod_alarm.php文件的代码:

在这个文件中首先new一个类 modAlarmHelper.然后调用这个类的getData()方法,并且设置了一个参数$params.

于2014-08-20日修改:如果按照joomla推荐的方法,在helper类中使用静态方法,那么这里就不用使用new了。

一切都是很有道理的。除了$params这个变量。我们不经要问了,$params这个变量是什么东西,是从哪里来的。关于这个问题的答案,从执行结果我们就可知道了。$params是一个对象,这个对象主要用来处理模块参数的。是系统为我们维护的。

print_r($params)的执行结果:

JRegistry Object
(
    [data:protected] => stdClass Object
        (
            [inputModel] => 1
            [content] => www.zmax99.com
        )

)
说明他是一个JRegistry对象。关于JRegistry对象。请参考本网站的相关文章。

作者: 樱木花道

Joomla程序员,从J1.5到J4.x始终都在做Joomla相关开发定制工作,有超过10年行业经验,国内Joomla扩展开发商ZMAX团队的核心成员

作者网站:ZMAX程序人

评论 (0)

  • 最新在前
  • 最佳在前