# 第5章 TP5.0 控制器
==============================================
## 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、資源控制器一般配合資源路由使用