1. 程式人生 > >TP5學習第三天,檢視輸出及回顧

TP5學習第三天,檢視輸出及回顧

要輸出檢視,必須在控制器方法中進行模板渲染輸出操作

<?php
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
public function hello($name = 'thinkphp')
{
$this->assign('name', $name);
return $this->fetch();
}
}

注意, Index 控制器類繼承了 think\Controller 類之後,我們可以直接使用封裝好的assign 和
fetch 方法進行模板變數賦值和渲染輸出。
fetch 方法中我們沒有指定任何模板,所以按照系統預設的規則(檢視目錄/控制器/操作方法)輸出了
view/index/hello.html 模板檔案。

注意:

  1. return $this->fetch()這個方法,是用於檢視的渲染模板輸出。

但是如果請求為ajax的話,他返回的就是json轉義之後的方法,必須要把return改成echo才行。
這很不合常理,fetch本身就是檢視輸出,不應該判斷請求就進行轉義。

除了路由配置檔案中定義之外,還可以採用動態定義路由規則的方式定義,例如在路由配置檔案(
application/route.php )的開頭直接新增下面的方法:
use think\Route;
Route::rule('hello/:name', 'index/hello');
完成的效果和使用配置方式定義是一樣的。
無論是配置方式還是通過Route類的方法定義路由,都統一放到路由配置檔案application/route.php
檔案中

注意:路由配置不支援在模組配置檔案中設定。

路由引數
我們還可以約束路由規則的請求型別或者URL字尾之類的條件,例如:
二、URL和路由
本文件使用 看雲 構建 - 27 -
return [
// 定義路由的請求型別和字尾
'hello/[:name]' => ['index/hello', ['method' => 'get', 'ext' => 'html']],
];
上面定義的路由規則限制了必須是get 請求,而且字尾必須是html 的,所以下面的訪問地址:
http://tp5.com/hello // 無效
http://tp5.com/hello.html // 有效
http://tp5.com/hello/thinkphp // 無效
http://tp5.com/hello/thinkphp.html // 有效

需要用到事務的功能,請先修改資料表的型別為InnoDB ,而不是MyISAM 。

MyISAM:這個是預設型別,它是基於傳統的ISAM型別,ISAM是Indexed Sequential Access Method (有索引的順序訪問方法) 的縮寫,它是儲存記錄和檔案的標準方法。與其他儲存引擎比較,MyISAM具有檢查和修復表格的大多數工具。 MyISAM表格可以被壓縮,而且它們支援全文搜尋。它們不是事務安全的,而且也不支援外來鍵。如果事物回滾將造成不完全回滾,不具有原子性。如果執行大量的SELECT,MyISAM是更好的選擇。

InnoDB:這種型別是事務安全的。它與BDB型別具有相同的特性,它們還支援外來鍵。InnoDB表格速度很快。具有比BDB還豐富的特性,因此如果需要一個事務安全的儲存引擎,建議使用它。如果你的資料執行大量的INSERT或UPDATE,出於效能方面的考慮,應該使用InnoDB表,對於支援事物的InnoDB型別的表,影響速度的主要原因是AUTOCOMMIT預設設定是開啟的,而且程式沒有顯式呼叫BEGIN開始事務,導致每插入一條都自動Commit,嚴重影響了速度。可以在執行SQL前呼叫BEGIN,多條SQL形成一個事物(即使AUTOCOMMIT開啟也可以),將大大提高效能。