ThinkPHP5.0框架开发--第5章 TP5.0 控制器
ThinkPHP5.0框架开发--第5章 TP5.0 控制器
第5章 TP5.0 控制器
==============================================
上次复习
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、配置文件
C:\AppServ\www\tp5\application\Route.php
1、动态设置当个路由
use think\Route;
Route::rule();
Route::get();
Route::post();
Route::delete();
Route::put();
2、动态批量设置路由
Route::rule([
'路由规则1'=>'路由地址和参数',
'路由规则2'=>['路由地址和参数','匹配参数(数组)','变量规则(数组)']
...
],'','请求类型','匹配参数(数组)','变量规则');
3、配置文件注册路由
return[
'new/:id' => 'News/read',
'blog/:id' => ['Blog/update',['method'=>'post|put'],['id'=>'\d+']],
];
==============================================
今日学习
1、新建控制器(前台模块为例)
1、在前台控制器目录下(C:\AppServ\www\tp5\application\index\controller) 新建控制器文件 User.php
2、User.php文件中如何书写
<?php
// 声明命名空间
namespace app\index\controller;
// 声明控制器
class User{
// 声明方法
public function index(){
return "我是User控制器下的index方法";
}
}
3、地址栏访问
http://www.tp.com/index.php/Index/user/index
4、注意:
1、控制器文件名必须首字母大写,文件名采用驼峰命名。
2、控制器名必须跟文件名一一对应
3、命名空间必须和文件名对应
namespace app\index\controller;
C:\AppServ\www\tp5\application\index\controller
4、如果控制器名字采用驼峰命名 UserInfo.php
http://www.tp.com/index.php/Index/user_info/index (加一个下划线)
2、控制器如何加载页面
1、系统View类
$view=new \think\View;
return $view->fetch();
use think\View;
$view=new View();
return $view->fetch();
2、系统Controller类
1、需要继承系统控制器类
use think\Controller;
// 声明控制器
class User extends Controller
2、直接使用系统控制器类的方法
return $this->fetch();
3、系统函数
return view();
3、数据输出
1、在应用配置文件中可以设置数据返回格式
'default_return_type' => 'json', #默认是html
2、ajax请求的时候如何返回数据
'default_ajax_return' => 'json',
4、控制器的初始化
1、控制器初始化方法必须继承系统控制器
// 控制器的初始化方法
public function _initialize(){
echo "我是初始化方法";
}
2、只要调用控制器下的任意方法,都会先找初始化方法
3、控制器初始化方法的使用
1、可以用来提取控制器下公共的代码
2、后台权限把控
5、前置操作
0、前置方法 把一些公共的设置提取成方法进行调用
1、前置方法必须结合系统控制器
2、核心设置
// 前置方法属性
protected $beforeActionList=[
'one',
// 不想让谁使用前置方法two
'two'=>['except'=>"index"],
// 仅仅可以让谁使用前置方法three
'three'=>['only'=>'index'],
];
6、页面跳转
0、页面跳转基于系统控制器类,所以控制器必须继承系统控制器
1、方法所在路径
C:\AppServ\www\tp5\thinkphp\library\traits\controlle\Jump.php
2、跳转方式
a、成功跳转
// $this->success(提示信息,跳转地址,用户自定义数据,跳转跳转,header信息);
// 跳转地址未设置时 默认返回上一个页面
$this->success('跳转成功',url('index/index'));
b、失败跳转
$this->error('登录失败');
3、跳转方法给模板页面的数据
1、$code 返回的状态码 成功 1 失败 0
2、$msg 页面的提示信息
3、$wait 等待时间
4、$url 制定跳转页面 默认返回上一个页面
5、$data 用户返回的数据
4、相关配置文件
// 默认跳转页面对应的模板文件
'dispatch_success_tmpl' => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl',
'dispatch_error_tmpl' => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl',
4、修改成功和失败的模板页面
a、修改默认文件
1、默认文件位置
C:\AppServ\www\tp5\thinkphp\tpl\dispatch_jump.php
2、根据原有代码进行修改
在成功失败模板页面进行修改
b、用户自定义页面跳转模板
1、修改配置文件
'dispatch_success_tmpl' => THINK_PATH . 'tpl' . DS . 'success.tpl',
'dispatch_error_tmpl' => THINK_PATH . 'tpl' . DS . 'error.tpl',
2、在系统模板目录下 (C:\AppServ\www\tp5\thinkphp\tpl) 新建 success.php 和error.php
3、自定义书写跳转页面
7、重定向
1、作用:
重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置
2、使用:
redirect('跳转地址','其他参数',code,'隐士参数');
$this->redirect('index/index',['id'=>100,'name'=>'abc']);
8、空控制器和空操作
1、空操作
# 主要解决一些用户恶意的地址栏输入,报错影响交互
public function _empty(){
$this->redirect('index/index');
}
2、空控制器
// 声明命名空间
namespace app\index\controller;
use think\Controller;
// 声明控制器
class Error extends Controller{
// index
public function index(){
$this->redirect('index/index');
}
// 空操作
public function _empty(){
$this->redirect('index/index');
}
}
3、注意:
1、网站上线的时候每一个控制器都必须添加空操作
2、不论前台后台都需要写一个空控制器
9、使用命令行
1、切换到网站的根目录下
2、输入php think
3、使用
1、创建控制器
php think make:controller app\index\controller\Goods
2、创建数据模型
php think make:model app\index\model\Goods
3、清空runtime 临时文件
php think clear
10、资源控制器
1、使用命令行创建控制器
php think make:controller app\index\controller\Goods
2、资源控制器一般配合资源路由使用
11、系统类
Config
Env
Controller
View
Route
URL
12、系统方法
config();
view();
controller();
action();
url();
dump();
ThinkPHP5.0框架开发--第5章 TP5.0 控制器的更多相关文章
- ThinkPHP5.0框架开发--第4章 TP5.0路由
ThinkPHP5.0框架开发--第4章 TP5.0路由 第4章 TP5.0 路由 ================================================== 上次复习 1. ...
- ThinkPHP5.0框架开发--第3章 TP5.0 配置
ThinkPHP5.0框架开发--第3章 TP5.0 配置 第3章 TP5.0 配置 ========================================================= ...
- ThinkPHP5.0框架开发--第1章 Tp5.0安装
ThinkPHP5.0框架开发--第1章 Tp5.0安装 第1章 Tp5.0 安装 ======================================================== 今 ...
- ThinkPHP5.0框架开发--第2章 TP5.0架构
ThinkPHP5.0框架开发--第2章 TP5.0架构 第2章 TP5.0架构 ================================================== 上次复习 1.如 ...
- ThinkPHP5.0框架开发--第11章 TP5.0 杂项
ThinkPHP5.0框架开发--第11章 TP5.0 杂项 第11章 TP5.0 杂项 =============================================== 今日学习 1. ...
- ThinkPHP5.0框架开发--第10章 TP5.0验证器
ThinkPHP5.0框架开发--第10章 TP5.0验证器 第10章 TP5.0验证器 ======================================= 今日学习 1.验证器 1) 控 ...
- ThinkPHP5.0框架开发--第9章 TP5.0视图和模板
ThinkPHP5.0框架开发--第9章 TP5.0视图和模板 第9章 TP5.0视图和模板 ===================================================== ...
- ThinkPHP5.0框架开发--第8章 TP5.0 模型
ThinkPHP5.0框架开发--第8章 TP5.0 模型 第8章 TP5.0 模型 ================================================= 今日学习 1. ...
- ThinkPHP5.0框架开发--第7章 TP5.0数据库操作
ThinkPHP5.0框架开发--第7章 TP5.0数据库操作 第7章 TP5.0数据库操作 ===================================================== ...
随机推荐
- ”危险“的RESTRICT与GCC的编译优化(编程者对编译器所做的一个“承诺”:使用restrict修饰过的指针,它所指向的内容只能经由该指针修改)
restrict是C99标准中新添加的关键字,对于从C89标准开始起步学习C语言的同学来说(包括我),第一次看到restrict还是相当陌生的.Wikipedia给出的解释如下: In the C p ...
- Swift - 判断是否有某功能访问权限,没有则提示,并自动跳转到设置页
由于 iOS 系统的安全限制,App 如果需要访问设备的通讯录.麦克风. 相册. 相机.地理位置等时,需要请求用户是否允许访问. 有时用户不小心点了“不允许”,后面可能就不知道要去哪里再开启这个权 ...
- Windows系统安装MySQL5.5.21图解教程
大家都知道MySQL是一款中.小型关系型数据库管理系统,很具有实用性,对于我们学习很多技术都有帮助 数据库是5.5.21这个版本的.以下是安装步骤: 1.首先单击MySQL5.5.21的安装文件,出现 ...
- crawler4j多线程爬虫统计分析数据
该事例演示了如何在多线程中统计和分析数据: 首先建一个状态实体类CrawlStat: package com.demo.collectingData; /** * 爬虫状态实体类 统计爬虫信息 * @ ...
- 项目中解决实际问题的代码片段-javascript方法,Vue方法(长期更新)
总结项目用到的一些处理方法,用来解决数据处理的一些实际问题,所有方法都可以放在一个公共工具方法里面,实现不限ES5,ES6还有些Vue处理的方法. 都是项目中来的,有代码跟图片展示,长期更新. 1.获 ...
- js-apply call bind 浅析
call 1.第一个参数指定了this,第二个参数传给this,也就是call前面的函数,作为他的参数第三个参数也一样 指定了this,就是执行环境,greet的this在i里面找 function ...
- 移动端 | table 布局
<table border=” cellspacing="> <caption>表格标题</caption> <tr> <td alig ...
- ajax的post提交方式和传统的post提交方式哪个更快?
如果同时用ajax和post提交先执行哪个呢?是ajax返回后再执行post呢还是同时执行? ajax的post提交方式和传统的post提交方式哪个更快? >> php这个答案描述的挺清楚 ...
- 《鸟哥的Linux私房菜》笔记——04. 简单命令行
键入命令 [dmtsai@study ~]$ command [-options] parameter1 parameter2 ... 指令 選項 參數(1) 參數(2) 注意:有时也可以使用 + 放 ...
- gcc编译c中有与lua交互的代码
编译C程序中有与Lua有关的程序(编译环境是Linux系统,lua解释器是luajit)gcc -o test30 test30.cpp -I/usr/local/include/luajit-2.0 ...