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 Smarty模版简单使用方法

    PHP Smarty模版简单使用方法

    这篇文章主要介绍了PHP Smarty模版简单使用方法,结合实例形式分析了PHP调用Smarty模板的配置,变量设置及使用方法,需要的朋友可以参考下
    2016-03-03
  • Codeigniter框架实现获取分页数据和总条数的方法

    Codeigniter框架实现获取分页数据和总条数的方法

    这篇文章主要介绍了Codeigniter框架实现获取分页数据和总条数的方法,实现了对获取当前页的数据和总条数方法的封装,是非常实用的技巧,需要的朋友可以参考下
    2014-12-12
  • php的api数据接口书写实例(推荐)

    php的api数据接口书写实例(推荐)

    下面小编就为大家带来一篇php的api数据接口书写实例(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • php 生成Tab键或逗号分隔的CSV

    php 生成Tab键或逗号分隔的CSV

    这篇文章主要介绍了php 生成Tab键或逗号分隔的CSV的相关资料,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • Laravel + Elasticsearch 实现中文搜索的方法

    Laravel + Elasticsearch 实现中文搜索的方法

    这篇文章主要介绍了Laravel + Elasticsearch 实现中文搜索的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • laravel框架邮箱认证实现方法详解

    laravel框架邮箱认证实现方法详解

    这篇文章主要介绍了laravel框架邮箱认证实现方法,结合实例形式详细分析了laravel框架邮箱认证功能的具体实现步骤及相关操作技巧,需要的朋友可以参考下
    2019-11-11
  • Smarty模板变量调节器用法分析

    Smarty模板变量调节器用法分析

    这篇文章主要介绍了Smarty模板变量调节器用法,较为详细的分析了Smarty模板变量调节器的功能与具体使用技巧,需要的朋友可以参考下
    2016-05-05
  • ThinkPHP行为扩展Behavior应用实例详解

    ThinkPHP行为扩展Behavior应用实例详解

    这篇文章主要介绍了ThinkPHP行为扩展Behavior应用实例,对于读者深入了解ThinkPHP框架程序设计大有帮助,需要的朋友可以参考下
    2014-07-07
  • PHP封装分页函数实现文本分页和数字分页

    PHP封装分页函数实现文本分页和数字分页

    本文主要是给大家分享了一段PHP的封装好的分页函数,可以实现文本分页和数字分页两种形式,非常的实用,有需要的朋友可以参考下
    2014-10-10
  • ThinkPHP 5.1 跨域配置方法

    ThinkPHP 5.1 跨域配置方法

    今天小编就为大家分享一篇ThinkPHP 5.1 跨域配置方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10

最新评论