控制器

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 类内置了两个跳转方法 successerror ,用于页面跳转提示

<?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秒

successerror 方法都可以对应的模板,默认的设置是两个方法对应的模板都是

// 默认成功跳转对应的模板文件
'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
powered by GitbookEdit Time: 2024-06-06 18:25:40