thinkphp5.0学习(五): TP5.0控制器

来源:互联网 发布:java抢红包总额 编辑:程序博客网 时间:2024/05/16 01:31

复习

1.路由

a.有利于SEO优化
b.简介方便记忆

2.路由模式

1.普通模式(PATHINFO)
http://www.tp.com/index.php/index/index/index

2.混合模式
支持PATHINFO和路由

3.强制模式
只支持路由模式

4.模式切换和配置文件有关

// 是否开启路由'url_route_on'           => true,// 是否强制使用路由'url_route_must'         => false,

3.设置路由

0.配置文件
项目\application\Route.pp\hp
1.动态设置单个路由

use think\Route;Route::rule();Route::get();Route::post();Route::delete();Route::put();

2.动态批量设置路由

Route::rule([    '路由规则1'=>'路由地址和参数',    '路由规则2'=>['路由地址和参数','匹配参数(数组)','变量规则(数组)'],    ...],'请求类型','匹配参数(数组)','变量规则');

3.配置文件注册路由

return [    "index"=>"index/index/index",    "diaoyong"=>"index/index/diaoyong",    "type/:id"=>"index/index/type"];

今日学习

一、新建控制器(前台模块为例)

1.在前台控制器目录下(项目\application\index\controller)
新建控制器文件User.php

2.User.php文件中如何书写

<?php    // 声明命名空间    namespace app\index\controller;    // 声明控制器    class User    {        public function index()        {            echo '我是User控制器下的index方法';        }    }?>

3.地址栏访问
http://www.tp.com/index/user/index

4.注意:
1.控制器文件名必须首字母大写,文件名采用驼峰命名
2.控制器名必须跟文件名一一对应
3.命名空间必须和文件名对应
4.如果控制器文件名是UserInfo 类名也必须是UserInfo 但是访问时输入user_info *

二、控制器加载页面

1.系统View类

// 实例化系统view类$view=new \think\View;return $view->fetch();// 直接实例化use think\View;$view=new View();return $view->fetch();

2.系统Controller类
1.需要继承系统控制器类的方法
2.直接使用系统控制类方法

use think\Controller;// 声明控制器class User extends Controller{    // 加载页面    public function jiazai(){        // 使用系统contrller类        // use think\Controller;        // class User extends Controller{}        return $this->fetch();     }}

3.系统方法(助手函数)

return view();

三、数据输出

1.应用配置文件中可以设置数据返回格式

// 默认输出类型'default_return_type'    => 'json',   //默认是html

2.ajax请求的时候如何返回数据

// 默认AJAX 数据返回格式,可选json xml ...'default_ajax_return'    => 'json',

四、控制器的初始化

1.控制器初始化的方法必须继承系统控制器

// 控制器的初始化方法public function _initialize(){    echo "我是一个初始化的方法";}

2.只要调用控制器的任意方法,都会先找初始化的方法
3.控制器初始化方法的使用

  • 可以用来提取控制器下公共的代码
  • 后台权限把控

五、前置操作

0.前置方法 把一些公共的设置提取成方法进行调用
1.前置方法必须继承系统控制类
2.核心设置

<?php    // 声明命名空间    namespace app\index\controller;    use think\Controller;    // 声明控制器    class UserInfo extends Controller    {        // 声明前置方法属性        protected $beforeActionList=[            'one',            'two'=>['except'=>'index'],   //不想让index使用two这个前置方法            'three'=>['only'=>'index']   //仅仅可以给index方法使用        ];        public function one(){            echo 'one<hr>';        }        public function two(){            echo 'two<hr>';        }        public function three(){            echo "three<hr>";        }        public function index()        {            echo '我是UserInfo控制器下的index方法';        }        public function index1()        {            echo '我是UserInfo控制器下的index1方法';        }    }?>

六、页面跳转

0.页面跳转基于系统控制类,所以控制器必须继承系统控制器
1.方法所在路径
项目\thinkphp\library\traits\controller\Jump.php
2.跳转方式

  • 成功跳转

    // $this->success('提示信息','跳转地址','用户自定义数据','跳转时间','header信息');// 跳转地址未设置时,默认返回上一个页面$this->success('跳转成功',url('index/index'));
  • 失败跳转

        $this->error('登录失败');

3.跳转方法给模板页面的数据

  • $code 返回的状态码 成功1 失败0
  • $msg 页面的提示信息
  • $wait 等待时间
  • $url 指定的跳转页面 默认返回上一个页面
  • $data 用户返回的数据

4.相关配置文件

// 默认跳转页面对应的模板文件 'dispatch_success_tmpl'  => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl', 'dispatch_error_tmpl'    => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl',

5.修改成功和失败的模板页面

  • 修改默认文件

        1.项目\thinkphp\tp1\dispatcj_jump.php    2.根据原有代码进行修改        在成功失败模板页面直接进行修改
  • 用户自定义页面跳转模板

    1. 修改配置文件

      // 默认跳转页面对应的模板文件// 'dispatch_success_tmpl'  => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl','dispatch_success_tmpl'  => THINK_PATH . 'tpl' . DS . 'success.tpl',// 'dispatch_error_tmpl'    => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl','dispatch_error_tmpl'    => THINK_PATH . 'tpl' . DS . 'error.tpl',
    2. 在系统模板目录下(项目\thinkphp\tpl)新建success.tpl和error.tpl

    3. 自定义书写跳转页面

七、重定向

1.作用:
重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置
2.使用:

    redirect('跳转地址','其它参数',code,'隐式参数')

八、空控制器和空操作

1.空操作
主要解决一些用户恶意的地址栏输入,报错影响交互

    public function _empty(){            $this->redirect('index/index');        }

2.空控制器

    <?php            namespace app\index\controller;            use think\Controller;            class Error extends Controller            {                public function index()                {                    $this->redirect('index/index');                }                // 空操作                public function _empty(){                    $this->redirect('index/index');                }            }        ?>

3.注意

  • 网站上线的时候每一个控制器都必须添加空操作

  • 不论前台后台都需要写一个空控制器

九、使用命令行

1.切换到网站的根目录下
2.输入php think
3.使用

  • 创建控制器

        php think make:controller app\index\controller\Goods
  • 创建数据模型

        php think make:model app\index\model\Goods
  • 清空runtime临时文件

        php think clear

十、资源控制器

1.使用命令行创建控制器

php think make:controller app\index\controller\Goods

2.资源控制器一般配合资源路由使用

十一、系统类

ConfigEnvControllerViewRouteUrl

十二、系统方法

config();view();controller();action();url();dump();
原创粉丝点击