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.根据原有代码进行修改 在成功失败模板页面直接进行修改
用户自定义页面跳转模板
修改配置文件
// 默认跳转页面对应的模板文件// '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',
在系统模板目录下(项目\thinkphp\tpl)新建success.tpl和error.tpl
自定义书写跳转页面
七、重定向
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();
- thinkphp5.0学习(五): TP5.0控制器
- thinkphp5.0学习(九):TP5.0视图和模板
- thinkphp5.0学习(十):TP5.0验证器
- thinkphp5.0学习(十一):TP5.0杂项
- thinkphp5.0学习(二):tp5.0架构和运转流程
- thinkphp5中的分层控制器及其使用/tp5分层控制器
- Windows下thinkphp5.0(tp5)的memcache数据缓存技术的实现过程
- ThinkPHP5.0学习(一)
- thinkphp5.0 rc4控制器使用篇之一
- ThinkPHP5.0学习笔记
- ThinkPHP5.0版本学习
- thinkphp5.0学习(一):准备
- thinkphp5.0学习(三):配置相关
- thinkphp5.0学习(七):数据库操作
- thinkphp5.0学习(八):模型
- Android程序员学PHP开发(33)-ThinkPHP5.0(5)命名空间与TP5-PhpStorm
- ThinkPHP5.0 控制器继承基类和自定义类
- ThinkPHP5.0 控制器继承基类和自定义类
- 376. Wiggle Subsequence(摆动子序列)
- 御坂妹妹
- Windows版eclipse修改主题
- [UnityEditor基础]创建Lua脚本模版
- 58同城等25家企业荣获天下无贼联盟反诈骗先锋奖
- thinkphp5.0学习(五): TP5.0控制器
- 能量英语俱乐部第一次会议
- android studio无法下载gradle
- vivo X6&X6Plus三大优势:安全、速度和准确
- OLED闪耀CES 2016,金立手机为何能提前押对方向?
- 微信公开课PRO版:vivo联合微信发布手机指纹支付安全标准
- 策略模式
- 提高sql数据库查询速度
- 康娜的二叉树