在进一步的讨论表单系统之前,先实现上一节忘记实现的问题。如何做新建功能?
实现新建(添加)功能
新建功能和编辑功能非常的像,无论是操作还是页面都是一样的,唯一的不同就是新建是不需要加载默认数据的。因此,通过以上分析,只需要对编辑页面进行修改即可实现新建的功能。
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
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来判断当前需要执行的是插入或者更新的方法,逻辑很简单。
至此,就实现了新建的功能。
评论 (0)