xml在joomla表单中的应用详解分享

 更新时间:2012年07月19日 13:27:13   作者:   我要评论
xml在joomla中应用广泛,从安装文件配置到模版,模块,组件,插件中都有应用
使用起来基本都有固定格式,在此不多说,这里主要说说xml在创建表单中的应用.表单的作用不言而喻,在模块配置里面有表单,组件里面也有表单,这里的配置里面的参数设置就是xml生成的表单,相对于通过直接建表单方便不少,这里通过编辑文章表单的使用过程来说,在使用之前,我们先来了解一下表单元素的类型,joomla提供了生成多种表单元素样式.
复制代码 代码如下:

<param name="created" type="calendar" label="创建时间" description="时间显示" /> //生成日历时间
<param name="catid" type="category" default="2" label="Category" description="文章分类列表" /> //得到单元列表
<param name="catid" type="category" section="com_weblinks" default="0" label="Category" description="其他组件分类" /> //其他组件单元列表
<param name='m1' type='editors' label='编辑' /> //编辑器选择列表
<param name='m1' type='filelist' label='编辑' directory='/images' hide_default="1" filter="html"/> //文件列表 html表示显示扩展名为html
<param name='m1' type='Folderlist' label='编辑' directory='/images' hide_default="1" filter=""/> //文件夹列表
<param name='m1' type='Hidden'/> //隐藏域
<param name="file_name" type="imagelist" directory="/images/stories" filter="" hide_default="1" label="Menu Image" description="图片列表列表" />
<param name="list" type="list" label="select列表" description="select 列表">
<option value="">未分类</option>
<option value="0">中国</option>
<option value="1">美国</option>
</param>
<param name='m1' type='password' label='测试' size='20'/> //密码
<param name="cache" type="radio" default="0" label="单选" description="单选按钮"> //单选
<option value="0">No</option>
<option value="1">Yes</option>
</param>
<param name="sectionid" type="section" default="0" label="选择单元" description="单元" /> //单元选择
<param type="spacer"/> //水平线
<param name='m1' type='sql' label='测试' query="select id,title from #__categories" key_field='id' value_field='title' /> //SQL生成列表
<param name="robots" type="text" size="20" default="10" label="文本框" description="文本框text" /> //文本框
<param name="keywords" type="textarea" rows="5" cols="90" label="文本域" description="文本域 textarea" /> //文本域无样式
<param name="keywords" type="editor" rows="5" cols="90" label="文本域" description="文本域 textarea" /> //文本域有样式
<param name='m1' type='Timezones' label='测试' default='8' /> //生成时区列表

上边就是提供的一些生成元素,但是如何使用呢,我们首先建立一个form.xml,在组件的models文件夹内
复制代码 代码如下:

<?xml version="1.0" encoding="utf-8"?>
<form>
<name>表单测试 </name>
<fieldset name='details'/>
<params group="html" addpath="/administrator/components/com_category/elements">
<param name='m1' type='Hidden'/>
</params>
</form>

这里只有一个隐藏元素其实我们可以建立更多的元素,就是上边的那些生成元素类型,当然还可以自定义,这里的addpath就是自定义元素类型,位置就是在组建的elements文件夹内,上边的是内置的,笔者在这里定义了如下类型
复制代码 代码如下:

<param name='custom' type='custom' label='自定义'> //自定义控件
<param name='arr' type='arr' label='数组' arr="array(1=>'中国',2=>'美国')"/>//数组转换成列表 不写下标从0开始
<param name='radios' type='radios' label='是否单选'> //生成是否单选
<param name='arr' type='upload' label='数组' size='20'/>//上传控件
<param name='arr' type='checkbox' label='数组' arr="array('1'=>'中国','2'=>'美国')"/>//数组复选
<param name='type' type='type' label='无线分类' />//无限分类 注意添加section父类为0

使用方法如上,元素的自定义文件在下载里面提供.接着我们在views文件夹下面你的视图文件夹内的view.html.php增加如下语句
复制代码 代码如下:

$form = new JParameter('',JPATH_COMPONENT.DS.'models'.DS.'form.xml');
$form->set('m1','默认值');
$html=$form->render('details', 'html'); //details是元素名数组
$this->assignRef('html',$html);

上边第二句就是赋值,把隐藏域赋值,相当于编辑里面取值,第三四句是把表单html输出到模版,details是元素名称数组名,生成的m1的name就是details[m1],接着就是form.php调用如下
复制代码 代码如下:

<form action="index.php" method="post" name="adminForm">
<fieldset class="adminform"><legend>详情</legend>
<?php
echo $this->html;
?>
<?php echo JHTML::_( 'form.token' ); ?>
</fieldset>
</form>

这样一个表单就生成了,相对于直接写表单元素,这种方法更容易修改风格或者内容,修改只需要改xml文件即可,在joomla2.5版本中,基本上都是通过这种方式实现的,不过变化比较大,xml文件写法大不相同,通过xml是可以调用其他组件里面表单元素的.

表单元素的这些类型在模版配置参数,模块参数都是可以使用的,特别是可以自己扩展表单元素的样式,你完全可以定义出其他样式类型,笔者定义了比较常用的几种但是内置没有提供的,比如数组转换列表,数组转换复选,无限分类等样式.这里的类型其实就是api的JElement类,里面的源文件可以参考libraries\joomla\html\parameter\element,这里自定义表单元素怎么写呢这里给个例子或者参考源文件就明白了,文件名custom.php,类型也就是custom了,调用方法<param name='custom' type='custom' label='自定义' />
复制代码 代码如下:

<?php
// 自定义显示
//
defined('_JEXEC') or die('Restricted access');

class JElementCustom extends JElement{
var $_name = 'Custom';
function fetchElement($name, $value, &$node, $control_name) {
$html=<<<EOF
自定义
EOF;
return $html;
}
}

好了,就不多讲了,其实这只是一种建立表单的方法,如果你不喜欢,完全可以使用写表单元素,不过既然joomla提供了这些我们为什么不用呢?
下载自定义元素: elements_jb51.rar

相关文章

  • php二维数组用键名分组相加实例函数

    php二维数组用键名分组相加实例函数

    php二维数组以键名进行分组相加的实例程序
    2013-11-11
  • 利用中国天气预报接口实现简单天气预报

    利用中国天气预报接口实现简单天气预报

    这篇文章主要介绍了利用中国天气预报接口实现简单天气预报的示例,大家参考使用吧
    2014-01-01
  • app判断链接参数后缀跳转不同地址的方法

    app判断链接参数后缀跳转不同地址的方法

    下面小编就为大家带来一篇app判断链接参数后缀跳转不同地址的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • 在Ubuntu 14.04上部署 PHP 环境及 WordPress

    在Ubuntu 14.04上部署 PHP 环境及 WordPress

    Ubuntu确实很好玩。有喜欢的命令行,简洁的界面,不同于Window要的感觉。偶尔换换环境工作,学习Linux的思维方式,是一种不错的做法。之前也折腾过Ubuntu,想在Linux下学习某些开发(主要还是和代码打交道),Ubuntu当然是最好不过的选择,并且刚发布了14.04版本
    2014-09-09
  • AJAX PHP无刷新form表单提交的简单实现(推荐)

    AJAX PHP无刷新form表单提交的简单实现(推荐)

    下面小编就为大家带来一篇AJAX PHP无刷新form表单提交的简单实现(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • Win10 下安装配置IIS + MySQL + nginx + php7.1.7

    Win10 下安装配置IIS + MySQL + nginx + php7.1.7

    本文给大家分享的是在WIN10系统中,安装配置IIS + MySQL5.7.19 + nginx1.12.1 + php7.1.7的详细教程,非常实用,有需要的小伙伴可以参考下
    2017-08-08
  • PHPMYADMIN 简明安装教程 推荐

    PHPMYADMIN 简明安装教程 推荐

    简单的说,phpmyadmin就是一种mysql的管理工具,安装该工具后,即可以通过web形式直接管理mysql数据,而不需要通过执行系统命令来管理,非常适合对数据库操作命令不熟悉的数据库管理者,下面我就说下怎么安装该工具
    2010-03-03
  • php面向对象的用户登录身份验证

    php面向对象的用户登录身份验证

    这篇文章主要为大家详细介绍了php面向对象的用户登录身份验证,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • PHP 源代码压缩小工具

    PHP 源代码压缩小工具

    所有的PHP文件包在一个PHP文件移除所有的注释移除多余空格保持输出纯PHP(即不需要任何额外的处理步骤来解析这个文件)
    2009-12-12
  • CI框架中$this->load->library()用法分析

    CI框架中$this->load->library()用法分析

    这篇文章主要介绍了CI框架中$this->load->library()用法,详细分析了加载library方法的步骤与相关注意事项,需要的朋友可以参考下
    2016-05-05

最新评论