< 返回 8.1 使用子控制器 - E计划

在上一章节中我们已经知道通过使用复选框可以确定当前需要操作的记录。在这一章节中,我们将使用子控制器,实现工具栏的删除功能

1,本节目标


了解如何使用控制器实现删除功能

2,组件的v2.0.3版本


com_zmaxbookv2.0.3_2020-12-31_for_j3x.zip

3,实现的效果


在未安装v2.0.3版本时,如果你点击工具栏上的删除按钮,那么系统会出错,截图如下:

组件找不到控制器.png   上面的提示信息明确指出,出错的原因是找不到items控制器。

在安装最新的v2.0.3版本后,我们实现了items控制器,再次点击删除就看到如下的截图:组件安装成功.png控制器删除成功.png

4,如何实现


总体的思路:获得复选框中的值,然后写SQL语句删除。删除成功后,重定向会当前页面。

具体的代码实现:

点击工具栏上的删除按钮,实际上joomla做的就是将task变量设置为items.delete,然后提交表单。在前面的章节中我们已经了解到,当task变量不为空的时候,系统首先会将task 变量按照点分进行拆分,前面的部分(items)就是需要执行的子控制器,后面部分就是需要执行(delete)的方法。

所以,下一步,我们需要在组建的目录下面创建一个controllers目录,在这个controllers目录下面创建一个items.php的文件。具体代码如下:

defined('_JEXEC') or die;

class zmaxbookControllerItems extends JControllerLegacy
{
	/**
	 * 删除功能的实现
	 *
	 * @return  void
	 */
	public function delete()
	{
		//STEP 1:得到提交的ID
		$app = JFactory::getApplication();
		$cid = $app->input->get('cid','','ARRAY');
		
		//STEP 2:执行SQL语句进行删除
		$db = JFactory::getDBO();
		$query ='DELETE FROM #__zmaxbook_item WHERE id IN('.implode(',',$cid).')';
		$db->setQuery($query);
		$db->execute();
		
		//STEP 3:提示用户删除成功,并且完成重定向
		$this->setRedirect("index.php?option=com_zmaxbook&view=items","操作成功");
		
		return true;
	}
}	

首先,按照设计由于约定原则,当系统发现task=items.deletes时,会自动在controllers目录下检查是否存在items.php文件。并且检查是否存在 zmaxbookControllerItems 类。如果不存在就会提供找不到控制器的错误。

 

 

  • 内容提要
  • 留言讨论 (0)
  • 视频教程

在上一章节中我们已经知道通过使用复选框可以确定当前需要操作的记录。在这一章节中,我们将使用子控制器,实现工具栏的删除功能

评论 (0)

  • 最新在前
  • 最佳在前

内容待完善

该课程提供视频版,可以观看完整的视频教程