第5章 TP5.0 控制器
阿新 • • 發佈:2018-12-19
上次複習 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();