第一次接触thinkcmf这个框架,有很多地方都不是很清楚。今天用这个框架实现前端中的页面跳转问题。我看了ThinkCMF的5.1的官方文档。现在来总结一下一个简单的跳转。需要在后台建立一个主菜单显示在前台来,点击不同菜单名跳转到不同界面。用的是自己的模板quick_start。
1、创建一个跳转的界面,创建的是company_profile.html和它的一个同名json文件。路径:public/themes/quick_start/portal/下这两个文件。
company_profile.json文件内容:
{
"name": "公司简介",
"action": "portal/Index/company_profile",
"description": "公司简介模板",
"order": 5.0,
"more": {
}
}
2、在后台刷新,查看启用模板的文件列表,会看到我们新建的company_profile.html,复制它的路劲。在设置中点击导航管理—》主导航—》菜单管理—》选择想要跳转的页面菜单——》点编辑——》选择地址的第一个,将刚才复制的路劲粘贴到里面,点击保存。
3、回到编码界面,在app的controller文件夹下添加一个CompanyProfileController.php的文件,里面内容如下
<?php
namespace app\portal\controller;
use cmf\controller\HomeBaseController; //HomeBaseController前台控制器基类
class CompanyProfileController extends HomeBaseController
{
public function index()
{
return $this->fetch(':company_profile');
}
}
其中,index()不建议修改,直接用public function index(){ } ,不然可能会报错。
在官方文档中
常见 fetch 调用方法如下:
1.不带任何参数:
return $this->fetch();
系统会按照默认规则自动定位模板文件,其规则是:
当前主题目录/当前应用/当前控制器(小写+下划线)/当前操作(小写)+.html
2.指定渲染当前控制器下的某个模板文件
return $this->fetch('edit');
模板定位规则是:
当前主题目录/当前应用/当前控制器(小写+下划线)/edit.html
3.指定渲染某个控制器下的某个模板文件
return $this->fetch('UserArticle/list');
模板定位规则是:
当前主题目录/当前应用/user_article/list.html
4.跨模块渲染模板(非特殊情况下这种方法在 cmf 中不推荐使用)
return $this->fetch('portal@UserArticle/list');
模板定位规则是:
当前主题目录/portal/user_article/list.html
5.从视图根目录开始读取模板
return $this->fetch('/list');
或
return $this->fetch(':list');
模板定位规则是:
当前主题目录/当前应用/list.html
注:以上调用方式,控制器和操作并不要求有实际对应的控制器和操作,它只是目录名称和文件名称而已;
6.渲染实际存在的模板文件
return $this->fetch('./themes/home/index.html');