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

前端之家收集整理的这篇文章主要介绍了xml在joomla表单中的应用详解分享前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

使用起来基本都有固定格式,在此不多说,这里主要说说xml在创建表单中的应用.表单的作用不言而喻,在模块配置里面有表单,组件里面也有表单,这里的配置里面的参数设置就是xml生成的表单,相对于通过直接建表单方便不少,这里通过编辑文章表单的使用过程来说,在使用之前,我们先来了解一下表单元素的类型,joomla提供了生成多种表单元素样式.
<div class="codetitle"><a style="CURSOR: pointer" data="32755" class="copybut" id="copybut32755" onclick="doCopy('code32755')"> 代码如下:

<div class="codebody" id="code32755">
//生成日历时间
//得到单元列表
//其他组件单元列表
//编辑器选择列表
<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="list" type="list" label="select列表" description="select 列表">
<option value="">未分类
<option value="0">中国
<option value="1">美国

//密码
<param name="cache" type="radio" default="0" label="单选" description="单选按钮"> //单选
<option value="0">No
<option value="1">Yes

//单元选择
<param type="spacer"/> //水平线
//sql生成列表
//文本框
//文本域无样式
//文本域有样式
//生成时区列表

上边就是提供的一些生成元素,但是如何使用呢,我们首先建立一个form.xml,在组件的models文件夹内
<div class="codetitle"><a style="CURSOR: pointer" data="24469" class="copybut" id="copybut24469" onclick="doCopy('code24469')"> 代码如下:
<div class="codebody" id="code24469">
<?xml version="1.0" encoding="utf-8"?>

表单测试

<params group="html" addpath="/administrator/components/com_category/elements">




这里只有一个隐藏元素其实我们可以建立更多的元素,就是上边的那些生成元素类型,当然还可以自定义,这里的addpath就是自定义元素类型,位置就是在组建的elements文件夹内,上边的是内置的,笔者在这里定义了如下类型
<div class="codetitle"><a style="CURSOR: pointer" data="2443" class="copybut" id="copybut2443" onclick="doCopy('code2443')"> 代码如下:
<div class="codebody" id="code2443">
//自定义控件
<param name='arr' type='arr' label='数组' arr="array(1=>'中国',2=>'美国')"/>//数组转换成列表 不写下标从0开始
//生成是否单选
//上传控件
<param name='arr' type='checkbox' label='数组' arr="array('1'=>'中国','2'=>'美国')"/>//数组复选
//无限分类 注意添加section父类为0

使用方法如上,元素的自定义文件在下载里面提供.接着我们在views文件夹下面你的视图文件夹内的view.html.PHP增加如下语句
<div class="codetitle"><a style="CURSOR: pointer" data="41964" class="copybut" id="copybut41964" onclick="doCopy('code41964')"> 代码如下:
<div class="codebody" id="code41964">
$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调用如下
<div class="codetitle"><a style="CURSOR: pointer" data="23401" class="copybut" id="copybut23401" onclick="doCopy('code23401')"> 代码如下:<div class="codebody" id="code23401">
<form action="index.PHP" method="post" name="adminForm">
<fieldset class="adminform">详情
<?PHP
echo $this->html;
?>
<?php echo JHTML::_( 'form.token' ); ?>



这样一个表单就生成了,相对于直接写表单元素,这种方法更容易修改风格或者内容,修改只需要改xml文件即可,在joomla2.5版本中,基本上都是通过这种方式实现的,不过变化比较大,xml文件写法大不相同,通过xml是可以调用其他组件里面表单元素的. 表单元素的这些类型在模版配置参数,模块参数都是可以使用的,特别是可以自己扩展表单元素的样式,你完全可以定义出其他样式类型,笔者定义了比较常用的几种但是内置没有提供的,比如数组转换列表,数组转换复选,无限分类等样式.这里的类型其实就是api的JElement类,里面的源文件可以参考libraries\joomla\html\parameter\element,这里自定义表单元素怎么写呢这里给个例子或者参考源文件就明白了,文件名custom.PHP,类型也就是custom了,调用方法
<div class="codetitle"><a style="CURSOR: pointer" data="5647" class="copybut" id="copybut5647" onclick="doCopy('code5647')"> 代码如下:<div class="codebody" id="code5647">
<?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相关文章