教程栏目

joomla中文网出品的官方教程

JModelAdmin类派生自JModelForm类,这个类具备操作JForm的方法。在2.5中joomla引人了新JForm类,这个类主要负责管理通过XML文件来产生表单。

通过让我们的类继承自JModelForm,在视图中我们可以获得一个JForm对象,这个对象包含了产生表单的方法。使得在视图中产生表单非常的简单。

 

由于JModelAdmin中有一个虚函数,所以必须在我们的子类中进行实现。一般的代码如下:

<?php
defined('_JEXEC') or die();

jimport('joomla.application.component.modeladmin');

class DownLoadModelItem extends JModelAdmin
{
	public function getForm( $data = array() , $loadData = true)
	{
		//Get the form
		$form = $this->loadForm('com_download.item' ,'item' ,array('control' =>' jform' ,'load_data' => $loadData ));
		if(!$form)
		{
			return false;
		}
		
		return $form;
	}
	
	public function loadFormData()
	{
		//Load form data
		$data = $this->getItem();
		return $data;
	}
}

 在getForm中指明我们要加载的表单,一般就是一个XML文件。在上面的例子就是说要加载models/forms /item.xml这个文件。jForm类将利用这个XML文件来产生一个表单对象。非常神奇的一点时,系统会依据任务自动判断是否加载数据。就是说系统 可以自动新建和编辑这两个任务的不同。(新建则无需加载数据,编辑则需要加载数据。)

 

当由XML文件产生表单对象的时候,XML文件的格式非常重要,什么时候用fileds标签,什么时候用field标签,什么时候用fieldset标签都是十分关键的。否则容易出现表单不加载数据的情况(本人曾经在这个问题上化了很多冤枉时间)

另外,为了让JForm对象能够自动加载数据,我们需要确保XML中field字段的name属性必须和数据库表字段的名称一样,否则出错。

 

在XML中还必须加一个隐藏的自段,这个字段用来提交id的值(数据表的主键)形如下面:

<field
				type="hidden"
				name="id"
			/>

 否则将不能处理修改。因为在form中找不到id,那么系统就会自动将这个记录插入到数据表中,而不会修改原来的记录。

 还有一个比较容易出错的地方就是tables文件中文件的命名和类的命令,默认情况下是和视图的类的名称是一样。具体怎样设置这个表的名称,现在还没有弄清楚。

评论 (0)

  • 最新在前
  • 最佳在前

第1章 Joomla入门教程

第3章 C计划

第5章 E计划

第6章 H计划

第7章 G计划

第9章 运行环境

第11章 主从与集群

第12章 模块开发

第13章 插件开发

第14章 j2.x组件开发教程

第15章 页面定制教程

第16章 页面构造器

第17章 joomla升级

第18章 其他系统迁移

第19章 流量翻倍计划