< 返回 8.3 增加编辑视图 - E计划

上一节,在控制器中实际上我们做的只是一个重定向,并没有真的做出编辑页面(视图)。在这一节,我们就来继续完善编辑页面。

1,本节目标


增加编辑视图,了解joomla页面渲染的流程

2,现在的效果


接上一节讲,当选择记录,点击编辑的时候,出现了错误页面,提示找不到item视图,截图如下:

3,为什么会产生这个界面?


实际上,在控制器我们做的仅仅只是一个重定向,重定向的地址为index.php?option=com_zmaxbook&view=item&id=3。如果你手动在地址栏输入这个地址,其结果和点击编辑按钮的效果是一样,在这里就不截图了。

也就是说, 当执行setRedirect后实际上就进入一个新的执行周期和之前的edit控制器已经没有多少关系了。就相当于页面自动跳转了一下。这一点有点绕,大家可以细品一下。

此时,我们可以按照组件执行的路由理论来重新的走一次这个地址:index.php?option=com_zmaxbook&view=item&id=3

  • STEP 1:因为我们在后台,所有会执行administrator/index.php文件
  • STEP 2:在index.php中,系统会检查option参数,发现option参数=com_zmaxbook。
  • STEP 3:当检测到option参数为com_zmaxbook后,系统将控制权转交给com_zmaxbook组件
  • STEP 4:执行com_zmaxbook下面的入口点文件,也就是zmaxbook.php文件
  • STEP 5:在入口点文件中,系统会检查是否存在task变量。如果存在,则进入相应的控制器,执行相应的方法。在本链接中,没有task变量,因此会执行默认的主控制器。也就是controller.php文件
  • STEP 6:在主控制器中,没有设置task变量,因此,系统默认执行display方法
  • STEP 7:在display方法中会检查是否存在view变量,如果存在则加载相应的视图。如果不存在,则加载主控制器的默认视图。在本链接中,存在view=item.因此,按照约定,系统此时应该前往views目录下找item视图,并且检查是否存在zmaxbookViewItem这个视图类。

现在就不难理论为何系统会提示这个找不到item视图的错误了.

4,添加item视图


添加新的视图的方法步骤如下:

STEP 1 :在views文件夹下新建一个文件夹,这个文件夹的名称为你的视图的名称

因为我们的视图是item视图,所以新建的文件夹为item

STEP 2 :在item文件夹下创建一个文件,文件的名称为view.html.php 。这个是固定的

STEP 3:编辑view.html.php这个文件,定义我们的视图类。

按照约定,控制器的类格式应该如下:

class zmaxbookViewItem extends JViewLegacy

 整个视图文件的代码如下:

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

class zmaxbookViewItem extends JViewLegacy
{
	
}

做完了这些,item视图类就定义好了。

现在再次刷新页面,系统错误提示已经变为找不到布局default.截图如下:

说明视图的问题已经解决了。下一步就是创建布局

5,添加布局文件


 在joomla中,视图最终渲染页面的HTML代码是由布局来产生的,且一个视图支持多个布局,视图的布局文件存在与视图的tmpl目录下面。布局可以在视图中使用layout变量来指定。如果没有指定,则系统默认会加载default布局(也就是default.php文件)。

添加布局的步骤如下:

在item目录下面新建一个tmpl目录,然后在tmpl目录下新建一个default.php文件。default.php 代码如下:

<?php
defined('_JEXEC') or die;
?>
<h1>I am from item view</h1>

 再次刷新页面,可以看到输出如下内容,截图如下:

至此编辑视图就没有报错了。但我们的编辑页面依然还没有着落。上面做的这些,只是完成了joomla要显示页面的一个基本框架。

 

E计划

第11章:支持多语言
第12章:前台展示组件
第13章:组件开发FAQ
第14章:高级功能
第15章:使用分类
第16章:让组件支持插件
  • 内容提要
  • 留言讨论 (0)
  • 视频教程
上一节,在控制器中实际上我们做的只是一个重定向,并没有真的做出编辑页面(视图)。在这一节,我们就来继续完善编辑页面。

评论 (0)

  • 最新在前
  • 最佳在前

内容待完善

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