淺談ThinkPHP(三)
實現商品的新增
1、在add.html頁面中更改表單元素的名稱
Goods控制器的add()方法中獲取商品分類
在add.html中迴圈獲取
2、設定提交的位置
3、新增商品程式碼參見GoodsController.class.php
方法一:
$this->redirect();也是跳轉
方法二(用create建立陣列):
create()的作用:
1、將表單元素的值和資料庫中的欄位一一匹配。
2、講資料庫中沒有的欄位在陣列中去除。
PHP中新增的語法如下:
success()和error()方法是thinkphp自帶的執行成功和失敗的方法,可以用此方法來實現跳轉。
方法三:
I()函式
I()用來獲取get、post、session\cookie等等的資料。
語法:I('變數的型別.變數的名稱',[預設值],[過濾方法])
變數型別 |
描述 |
Get |
獲取get提交的引數 |
Post |
獲取POST提交的引數 |
param |
自動判斷是get還是post |
request |
獲取request提交的資料 |
Session |
獲取會話的資料 |
Cookie |
獲取cookie資料 |
server |
類似是$_SERVER[]; |
globals |
獲取$GLOBALS引數 |
path |
獲取pathinfo模式的url引數 |
用法:
描述 |
例題 |
獲取get提交的name變數 |
I('get.name') |
獲取get提交的name變數並指定預設值 |
I('get.name','李白') |
獲取值後並呼叫函式處理資料 |
I('get.name',' ', mysql_real_escape_string,trim); |
獲取所有get提交的資料 |
I('get.') |
此配置檔案是預設的I的過濾引數
修改商品
update.html中新增隱藏域。
GoodsController.class.php頁面中程式碼如下:
$this->success()中跳轉的路徑一定要用U()轉換。
U方法
U()用來生成URL地址,配合“'URL_MODEL' => 0,”配置來使用,配置的值不同,生成的URL地址就不同
$this->sucess(),裡面的路徑一定要用U()方法來生成URL。
刪除商品
HTML頁面
在控制器中程式碼如下:
驗證碼
TP框架中自帶了驗證碼類
位置:Think/verify.class.php
在LoginController控制器中建立生存驗證碼的方法
login.html登陸模板中
在LoginController控制器中判斷驗證碼是否正確並且判斷登陸是否成功
檔案上傳
用到的知識點:
1、檔案上傳的時候,要設定表單的enctype屬性
2、$_FILE[名字][]用來接收檔案的資訊
第二維的欄位:
name
size
error
type
tmp_name
3、move_uploaded_file(臨時檔案,目標檔案)
ThinkPHP自帶了檔案上傳的類。位置:Think/Upload.class.php
生成縮圖
縮圖類存放的位置 Think\Image.class.php
自定義工具類
在application資料夾下新建一個components資料夾,此資料夾中存放自定義的工具類。
在components資料夾下新建一個EmailTool.class.php檔案
在控制器呼叫
TP中的session和cookie
session('name') 獲取名字是name的會話
session('name','李白'); 將'李白'付給name會話
session('name',null); 清空name的會話
session(null); 清空所有會話
------------------------------------
cookie('name') 獲取名字是name的cookie
cookie ('name','李白'); 將'李白'付給name cookie
cookie ('name',null); 清空name的cookie
cookie (null); 清空所有cookie
名稱空間
當開發大型專案的時候,可以會需要成千上萬的檔案
面向物件通過名稱空間來解決這個問題的。
PHP名稱空間是PHP5.3以後才出現的。
名稱空間中可以出現:類,函式,常量
只有const定義的常量名稱空間才有效。名稱空間的名字必須符合PHP命名的規則。
名稱空間是邏輯上的定義,邏輯的名稱 不是物理上的路徑
Tp中為了定址的方便把名稱空間做成地址
名稱空間的宣告和使用(namespace1.php)
名稱空間的多級訪問一(namespace2.php)
名稱空間的多級訪問二(namespace3.php)
空間元素訪問的三種形式
1、非限定名稱訪問
echo getInfo()
類似於:require ('getinfo.php');
2、限定名稱訪問,是相對限定
China\getInfo();
類似於:requrie ('China/getInfo.php');
3、完全限定訪問
\China\getInfo();
類似於 requre ('c:\China\getinfo.php');
引用名稱空間(namespace4.php)
名稱空間的注意事項:
1、最頂層的\表示的是公共空間
2、namespace必須在最上面。
3、命名是虛擬的空間,不是真實存在的目錄,但是ThinkPHP的名稱空間是真實的地址路徑。
4、當前檔案中include具有名稱空間的檔案,不會改變當前檔案的名稱空間。
5、use有兩個作用 引入名稱空間 引入類