在thinkphp中,跳轉頁面的實現由success和error方法實現,操作成功時用success方法,失敗則使用error方法。且他們兩者均支持Ajax提交。 使用方法舉例:
$User = M('User');//實例化User對象$result = $User->add($data);if($result){ //條件成立時跳轉 $this->success('操作成功','/User/index');}else{ //條件不成立時的跳轉 $this->error('操作失敗');}他們分別有三個參數,第一個參數代表提示信息,第二個參數表示跳轉地址,第三個參數是跳轉是件(單位:秒),例:
//操作完成3秒后跳轉到/Article/index$this->success('操作成功','/Article/index',3);//操作失敗5秒后跳轉到/Article/error$this->error('操作失敗','/Article/error',5);注:跳轉地址是可選參數,success方法默認的跳轉地址是$_SERVER[‘HTTP_REFERER’],error方法的默認跳轉地址是javascript:history.back(-1); 跳轉時間也是可選的,默認success方法是1s,error方法是3s。
Controller類的redirect方法可以實現頁面的重定向功能。 redirect方法的參數用法和U函數的用法一直,例:
//重定向到New模塊的Category操作$this->redirect("New/category',array('cate_id'=>2),5,'頁面跳轉中...');說明:上面的用法表示5秒后跳轉到New模塊的category操作,并且顯示‘頁面跳轉中…’字樣,重定向后會改變當前的額URL地址。 如果僅僅是想重定向到一個指定的URL地址而不是到某個模塊的操作方法,可以直接時用下面的額redirect函數重定向:
//重定向到指定的URL地址redirect('/New/category/cate_id/2',5,'頁面跳轉中...');redirect函數的第一個參數是URL地址。 注:redirect方法和redirct函數的區別在于前者是用URL規則定義跳轉,后者是一個純粹的URL地址。 thinkPHP可以很好的支持AJAX請求,在系統的/Think/Controller提供了ajaxReturn方法泳衣AJAX調用后返回數據給客戶端。并且支持JSON、JSONP、xml和EVAL四種方式給客戶端接收數據,并且支持配置其他方式的數據格式返回。 ajaxReturn方法調用示例(返回單個數據):
$data = 'ok';$this->ajaxReturn($data);ajaxReturn返回數組:
$data['status']=1;$data['content']='content';$this->ajaxReturn($data);ajaxReturn默認配置采用JSON格式返回數據(通過配置DEFAULT_AJAX_RETURN進行設置),我們可以指定格式返回,例:
//指定XML格式返回數據$data['status']=1;$data['content']='content';$this->ajaxReturn($data,'xml');I方法是thinkPHP用于更加方便和安全的獲取系統輸入變量,可以用于任何地方,格式:
I('變量類型.變量名/修飾符',['默認值' ], ['過濾方法或正則'], ['額外數據源']);變量類型 | 含義 |
---|---|
get | 獲取GET參數 |
post | 獲取POST參數 |
param | 自動判斷請求類型獲取GET、POST、或者PUT參數 |
request | 獲取REQUEST參數 |
put | 獲取PUT參數 |
session | 獲取$_SESSION參數 |
cookie | 獲取$_COOKIE參數 |
server | 獲取$_SERVER參數 |
globals | 獲取$GLOBALS參數 |
path | 獲取PATHINFO模式的URL參數 |
data | 獲取其他類型的參數,需要配合額外數據源參數 |
注意:變量類型不區分大小寫,變量名則嚴格區分大小寫。默認值和過濾方法均屬于可選參數。 舉例說明:
echo I('get.id'); //相當于$_GET['id']echo I('get.id', 0); //I方法支持的默認值,即當get.id不存在的時候,返回默認值0echo I('get.name', '', 'htmlspecialchars'); //采用htmlspecialchars對$_GET['name']進行過濾,如果不存在則返回空字符串echo I('get.'); //直接獲取整個變量類型I('post.name', '', 'htmlspecialchars'); //采用htmlspecialchars方法對$_POST['name']進行過濾,如果不存在則返回空字符串I('session.user_id',0); //獲取$_SESSION['user_id'],不存在時返回默認值0I('cookie.'); //獲取整個$_COOKIE數組I('server.REQUET_METHOD'); //獲取$_SERVER['REQUEST_METHOD']最新版本的I函數支持對變量使用修飾符功能,可以更方便的通過類型過濾變量,例子:
I('get.id/d'); //強制變量為整形I('get.ids/a'); //強制變量為數組類型可以使用的修飾符包括:
修飾符 | 作用 |
---|---|
s | 強制轉換為字符串類型 |
d | 強制轉換為整型類型 |
b | 強制轉換為布爾類型 |
a | 強制轉換為數組類型 |
f | 強制轉換為浮點類型 |
如果沒有在調用函數的時候指定過濾算法的話,系統會采用默認的過濾機制(由DEFAULT_FILTER配置),事實上,該參數的默認設置是:
//系統默認的變量過濾機制'DEFAULT_FILTER' =>'htmlspecialchars也就是說,I方法的所有獲取變量如果沒有設置變量過濾方法的話都會進行htmlspecialchars進行過濾,那么:
I('get.name'); //等同于htmlspecialchars($_GET['name']);默認過濾機制也可以有多個值:
'DEFAULT_FILTER' =>'strip_tags,htmlspecialcars'注:如果在使用I方法的時候指定過濾方法,那么就會忽略DEFAULT_FILTER的設置。 例:
//對$_POST['email']進行格式驗證,不符合要求時返回空字符串I('post.email', '', filter_validate_email);過濾方法名稱必須是filter_list方法中的有效值(不同服務器環境可能有所不同),可能支持的值如下:
filter_intfilter_booleanfilter_validate_regexpfilter_validate_emailfilter_validate_ipfilter_stringfilter_strippedfilter_encodedfilter_special_charsfilter_unsafe_rawfilter_emailfilter_urlfilter_number_intfilter_number_floatfilter_magic_quotesfilter_callback注:在一些特殊情況下,我們不希望進行任何過濾,可以將過濾方法值為空或false,此時系統就不會再進行任何形式的過濾了。
新聞熱點
疑難解答
圖片精選