```php
<?php
/**
* 一個控制器代碼示例
*/
namespace app\index\controller;
use think\Controller;
// 繼承了think\Controller類之后,可以直接使用think\View及think\Request類的方法
class Index extends Controller
{
// 定義某個方法為其他方法的前置操作
protected $beforeActionList = [
'first',
// 不寫默認為所有方法的前置操作,first方法在所有方法之前執行
'second' => ['except'=>'hello'],
// second為除了hello之外其他方法的前置操作
'three' => ['only'=>'hello,data'],
// three僅為hello和data方法的前置操作
];
// 構造方法
public function _initialize()
{
echo 'init<br/>';
}
// 首頁
public function index()
{
// 獲取包含域名的完整URL地址渲染到視圖(下面兩步可以用view助手函數替代)
$this->assign('domain',$this->request->url(true));
return $this->fetch('index');
}
/************************************
* 跳轉與重定向(默認等待3秒跳轉,可以設置)
* ********************************/
// 默認跳轉頁面模板都為:THINK_PATH . 'tpl/dispatch_jump.tpl'
// success與error模板更改方法,在配置文件中:
//默認錯誤跳轉對應的模板文件
'dispatch_error_tmpl' => APP_PATH . 'tpl/dispatch_jump.tpl',
//默認成功跳轉對應的模板文件
'dispatch_success_tmpl' => APP_PATH . 'tpl/dispatch_jump.tpl',
// 也可以直接使用項目中的模板文件
//默認錯誤跳轉對應的模板文件
'dispatch_error_tmpl' => 'public/error',
//默認成功跳轉對應的模板文件
'dispatch_success_tmpl' => 'public/success',
// 更加詳細的用法,比如向跳轉模板中傳一些參數,參考官方手冊跳轉與重定向一章
public function add()
{
if($result){
//設置成功后跳轉頁面的地址,默認的返回頁面是$_SERVER['HTTP_REFERER']
$this->success('新增成功', 'User/list');
} else {
//錯誤頁面的默認跳轉頁面是返回前一頁,通常不需要設置
$this->error('新增失敗');
}
// 重定向相關用法
//重定向到News模塊的Category操作
$this->redirect('News/category', ['cate_id' => 2]);
//重定向到指定的URL地址 并且使用302
$this->redirect('http://thinkphp.cn/blog/2',302);
// 在重定向的時候通過session閃存數據傳值
$this->redirect('News/category', ['cate_id' => 2], 302, ['data' => 'hello']);
// 使用redirect助手函數還可以實現更多的功能如:
// 記住當前的url之后跳轉
redirect('News/category')->remember();
// 跳轉到上次記住的url
redirect()->restore();
}
/**********************************
* 空操作(訪問一個該控制器中不存在的操作方法時默認調用空操作)
************************************/
// http://serverName/index/city/beijing/,_empty方法的參數即為傳入的操作名稱
// V5.0.2+開始,空操作方法不需要任何參數,如果要獲取當前的操作方法名,直接調用當前請求對象來獲取,你也可以使用依賴注入
public function _empty($name)
{
//把所有城市的操作解析到city方法
return $this->showCity($name);
}
//注意 showCity方法 本身是 protected 方法
protected function showCity($name)
{
//和$name這個城市相關的處理
return '當前城市' . $name;
}
}
```
- 運行環境需求
- tp5目錄結構
- 命令行生成代碼
- 路由
- 請求
- 獲取請求信息
- 超全局變量獲取
- 更改請求變量的值
- 判斷是否為某種請求類型
- 偽裝表單請求類型
- HTTP頭部信息
- 偽靜態
- 向請求對象中注入自定義的屬性和方法
- 簡單的傳參可以使用參數綁定
- 依賴注入(將對象注入方法作為參數)
- 將請求的數據進行緩存
- 控制器
- 一個控制器代碼示例
- 空控制器
- 資源控制器
- 模型
- 一個模型代碼示例
- 模型的四種調用方法
- 控制器中調用模型添加數據
- 控制器中調用模型更新數據
- 控制器中調用模型刪除數據
- 控制器中調用模型查詢數據
- 模型中使用聚合函數
- 獲取器
- 修改器
- 自動寫入時間戳
- 只讀字段
- 軟刪除
- 自動類型轉換
- 數據自動完成
- 查詢范圍
- 數組方式訪問和轉換為數組
- json序列化
- 模型的事件
- 關聯模型
- 一對一關聯
- 一對多關聯
- 遠程一對多(跨表關聯)
- 多對多關聯
- 多態關聯
- 關聯預載入N+1次查詢變2次
- 延遲預載入
- 關聯統計
- 視圖與模板
- 模板引擎配置
- 分配數據到模板
- 輸出替換
- 模板中輸出變量
- 模板中輸出系統變量(配置常量超全局)
- 模板中輸出請求信息
- 模板中使用php函數
- 輸出到模板中的變量指定默認值
- 模板中進行運算
- 原樣輸出代碼不解析
- 模版中注釋
- 模板布局與繼承
- 文件包含
- 內置標簽
- 循環輸出標簽
- 比較標簽
- 條件判斷標簽
- 引入資源文件(js-css)
- 使用原生php
- 在模板中定義變量和常量
- 助手函數
- 常用功能
- 表單驗證
- 驗證器的定義
- 自定義驗證規則
- 速查表
- 系統默認根命名空間
- 系統路徑常量
- 請求變量
- URL請求和信息方法