在Joomla中,已经实现了一套完整的表单机制。这套机制允许我们将一个在XML文件中定义的标准转换为HTML格式的表单。可以说这是Joomla CMS整个系统的精华所在。

简单的实例代码


// STEP 1 ://得到form对象
$formPath =JPATH_SITE . '/components/com_zmaxmsg/models/forms/'.$form.'.xml'; //表单XML的路径
$form = JForm::getInstance("com_zmaxmsg.".$form,$formPath,array('control' =>' jform' ,'load_data' => false )); 

上面的代码就会加载前台$formPath这个路径下的XML文件,并且实例化一个JForm对象

当我们得到了这个form对象之后,就可以对表单中的字段(也就是XML文件中的结点进行操作)。一般常用的操作有:

设置字段的值。使用setValue方法来完成

public function setValue($name, $group = null, $value = null)

注意这个方法的第二参数是$group. 第三个参数才是我们需要设置的值。这个不要弄错了。一段典型的应用如下:

$catid = $params->get("catid");
$form->setValue("catid",'',$catid);

上面的代码首先从参数中获得设置的分类的值,然后将这个值更新到表单中,这样在前台输出的下拉列表就会自动选中我们后台设置的值。 

设置字段的属性setFieldAttribute。(这个方法无法设置字段的值。)

$form->setFieldAttribute("catid",'type',"hidden"); 

上面的代码动态的将catid这个字段的类型设置为hidden.

在写本文之前,我一直尝试使用setFieldAttribute这个方法来设置字段的值,发现没有作用,因此在仔细的阅读源码,才发现设置字段的值应该使用setValue方法。以此备忘,希望对同样遇到这个问题的朋友有所帮助

更多关于JForm类


JForm类主要的功能是负责表单相关的问题。

具体的类实现文件可以参考http://www.joomlachina.cn/joomla/api/class-JForm.html