官方系列教材 - E计划

Joomla组件开发教程

在进一步的讨论表单系统之前,先实现上一节忘记实现的问题。如何做新建功能?

1,本节目标


实现新建(添加)功能

2,技术原理


新建功能和编辑功能非常的像,无论是操作还是页面都是一样的,唯一的不同就是新建是不需要加载默认数据的。因此,通过以上分析,只需要对编辑页面进行修改即可实现新建的功能。

3,具体实现


STEP 1:编辑控制器item.php文件,实现add方法。代码如下:

	public function add()
	{
		$editLink = "index.php?option=com_zmaxbook&view=item&id=0"; //id=0;就是新建
		$this->setRedirect($editLink);
		return true;
	}

 上面什么都没有做,只是简单的做了一个重定向到编辑页面,且传递的id=0

STEP 2:修改模型,增加对id=0的处理。修改模型item.php 的 getItem()方法,代码如下:

	public function getItem()
	{
		//STEP 1:获得需要编辑记录的ID
		$app = JFactory::getApplication();
		$id = $app->input->get("id",'0','INT');

		//STEP 2:查询数据库,得到编辑记录的详情
		$db = JFactory::getDBO();
		$query = $db->getQuery(true);
		$query->select("*")->from("#__zmaxbook_item")->where("id=".$db->quote($id));
		$db->setQuery($query);
		$item = $db->loadObject();
		if(!$item) //item不存在,创建一个空的对象,以避免视图中报错
		{
			$item = new stdclass(); //同时可以做一些默认值的设置
			$item->id =0;
			$item->title="";
			$item->author="";
			$item->price=0;
		}
		 return $item;
	}

 具体的代码解释,请看注释

STEP 3:修改编辑视图,增加一个关闭按钮

class zmaxbookViewItem extends JViewLegacy
{
	public function display($tpl = null)
	{
		$this->item = $this->get("Item"); //从模型获得数据
		if($this->item->id)
		{
			JToolbarHelper::title('书本管理 - 编辑书本', 'edit');	
		}
		else
		{
			JToolbarHelper::title('书本管理 - 添加书本', 'plus');
		}	
		
		
		JToolBarHelper::save('item.save');//保存按钮
		JToolBarHelper::cancel('item.cancel');//取消关闭按钮
		parent::display($tpl);
	}
} 

最终的新建界面的截图如下:

现在已经可以录入信息了。但点击保存后,是没有增加新的记录的,这是正常的。需要修改模型的save方法。

STEP 4:编辑item模型的,修改save方法。代码如下:

	//保存方法
	public function save($id,$title,$author,$price)
	{
		$db = JFactory::getDBO();
		$query = $db->getQuery(true);
		if($id) //有id说明是更新
		{
			$query->update("#__zmaxbook_item");			
			$query->where("id=".$db->quote($id));	
		}
		else
		{
			$query->insert("#__zmaxbook_item");
		}
		$query->set("title=".$db->quote($title));
		$query->set("author=".$db->quote($author));
		$query->set("price=".$db->quote($price));
		$db->setQuery($query);
		$result = $db->execute();
		return $result;
	}

 上面的代码通过id是否为0来判断当前需要执行的是插入或者更新的方法,逻辑很简单。

 至此,就实现了新建的功能。

4,一些小问题


  • 1,工具栏上的取消按钮非常的简单,我并没有实现。大家可以自己思考一下如何实现取消和关闭功能
  • 2,一般编辑或者新建的时候,主键ID是不允许更改的,上面的代码并没有处理,大家也可以自己想办法处理一下

5,V2.0.6版本


 [下载文件:]com_zmaxbookv2.0.6_2021-06-04_for_j3x.zip

作者: 樱木花道

Joomla程序员,从J1.5到J4.x始终都在做Joomla相关开发定制工作,有超过10年行业经验,国内Joomla扩展开发商ZMAX团队的核心成员

作者网站:ZMAX程序人

评论 (0)

  • 最新在前
  • 最佳在前

第1章 Joomla入门教程

第3章 C计划

第5章 E计划

第6章 H计划

第7章 G计划

第9章 运行环境

第11章 主从与集群

第12章 模块开发

第13章 插件开发

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

第15章 页面定制教程

第16章 页面构造器

第17章 joomla升级

第18章 其他系统迁移

第19章 流量翻倍计划