控制器
ThinkPHP V5.0的控制器定义比较灵活,可以无需继承任何的基础类,也可以继承官方封装的\think\Controller类或者自己封装的控制器类
控制器定义
<?php
namespace app\index\controller;
// 引入TP基础控制器
use think\Controller;
// 继承了think\Controller基础控制器可以直接调用think\View及think\Request类的方法
class Index extends Controller
{
// 初始化 在该控制器的方法调用之前首先执行
public function _initialize()
{
// 一般这里用于加载模型
}
// 查询
public function index()
{
// 业务逻辑...
// 调用了think/Controller的think\View类的方法
return $this->view->fetch();
}
// 新增
public function add()
{
// 判断是否POST请求
if($this->request->isPost())
{
// 业务逻辑
}
return $this->view->fetch();
}
// 修改
public function edit()
{
// 判断是否POST请求
if($this->request->isPost())
{
// 业务逻辑
}
return $this->view->fetch();
}
// 删除
public function del()
{
// 判断是否POST请求
if($this->request->isPost())
{
// 业务逻辑
}
}
}
页面跳转
在应用开发中,经常会遇到一些带有提示信息的跳转页面,例如操作成功或者操作错误页面,并且自动跳转到另外一个目标页面。系统的 \think\Controller
类内置了两个跳转方法 success
和 error
,用于页面跳转提示
<?php
namespace app\index\controller;
use think\Controller;
// 引入用户模型
use app\index\model\User;
class Index extends Controller
{
public function add()
{
// 实例化User对象
$User = new User;
// 把数据插入到数据库
$result = $User->save($data);
// 判断插入失败的结果是否等于false
if($result === FALSE){
// 设置成功后跳转页面的地址,默认的返回页面是$_SERVER['HTTP_REFERER']
$this->success('新增成功', url('/index/user/index'));
} else {
// 错误页面的默认跳转页面是返回前一页,通常不需要设置
$this->error('新增失败');
}
}
}
跳转地址是可选的,success
方法的默认跳转地址是 $_SERVER["HTTP_REFERER"]
,error
方法的默认跳转地址是 javascript:history.back(-1)
;
默认的等待时间都是3秒
success
和 error
方法都可以对应的模板,默认的设置是两个方法对应的模板都是
// 默认成功跳转对应的模板文件
'dispatch_success_tmpl' => APP_PATH . 'common' . DS . 'view' . DS . 'tpl' . DS . 'dispatch_jump.tpl',
// 默认错误跳转对应的模板文件
'dispatch_error_tmpl' => APP_PATH . 'common' . DS . 'view' . DS . 'tpl' . DS . 'dispatch_jump.tpl',
上面的是FastAdmin设置默认的模板,当然,也可以使用项目内部的模板文件:
// 默认成功跳转对应的模板文件
'dispatch_success_tmpl' => 'public/success',
// 默认错误跳转对应的模板文件
'dispatch_error_tmpl' => 'public/error',
自动搜索控制器
在多级控制器使用场景下作用非常大,优化URL地址访问
配置文件路径:application\config.php
'controller_auto_search' => true,
<!-- 修改前 http://你的基本url/模块名/分组名.控制器名/方法名 -->
http://www.fastadmin.com/index.php/goods.goods/index
<!-- 修改后 -->
http://www.fastadmin.com/index.php/goods/goods/index