傳統方式的導入外部JS和CSS文件的方法是直接在模板文件使用:javascript
系統提供了專門的標籤來簡化上面的導入:php
load標籤,經過文件方式導入當前項目的公共JS或者CSScss
系統還提供了兩個標籤別名js和css 用法和load一致,例如:html
原來在分頁時使用limit標籤:java
如今也能夠引入分頁類:jquery
page.class.php的命名空間:namespace Think\fenye;(其他不發生變化)ajax
控制器裏面寫入:use Think\fenye\Page;sql
ZhuCeController.class.php數組
1 namespace Home\Controller; 2 use Think\Controller; 3 use Think\fenye\Page; 4 class ZhuCeController extends Controller 5 { 6 7 //第三方類引入 8 function FenYe() 9 { 10 11 $model=M("nation"); 12 $total=$model->count(); 13 $page=new Page($total,1); 14 15 $sql="select * from nation ".$page->limit; 16 $attr=$model->query($sql); 17 18 $xinxi=$page->fpage(); 19 //var_dump($attr); 20 $this->assign("xinxi",$xinxi); 21 $this->assign("nation",$attr); 22 23 $this->display(); 24 } 25 }
View/ZhuCe/FenYe.html:session
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>無標題文檔</title> 6 </head> 7 8 <body> 9 <table border="1" width="40%"> 10 <tr> 11 <td>代號</td> 12 <td>名稱</td> 13 </tr> 14 <foreach name="nation" item="v"> 15 <tr> 16 <td><{$v.code}></td> 17 <td><{$v.name}></td> 18 </tr> 19 </foreach> 20 </table> 21 <div><{$xinxi}></div> 22 </body> 23 </html>
運行結果:
在Home下新建文件夾fenye而後引入Page.class.php,其他不發生改變,效果是同樣的
分頁類裏面的命名空間發生改變:namespace Home\fenye
控制器裏面的的命名空間改變:use Home\fenye\Page
運行結果不變:
1.修改Home裏面的分頁類
2.修改控制器中的寫法
(1)url要變爲MVC模式,指向的不是具體頁面,是操做方法
(2)在操做方法裏面返回值的時候,使用ajaxReturn()方法返回,注意返回類型,返回類型要和第二個參數一致
ThinkPHP能夠很好的支持AJAX請求,系統的\Think\Controller類提供了ajaxReturn方法用於AJAX調用後返回數據給客戶端。而且支持JSON、JSONP、XML和EVAL四種方式給客戶端接受數據,而且支持配置其餘方式的數據格式返回。
返回數據data能夠支持字符串、數字和數組、對象,返回客戶端的時候根據不一樣的返回格式進行編碼後傳輸。若是是JSON/JSONP格式,會自動編碼成JSON字符串,若是是XML方式,會自動編碼成XML字符串,若是是EVAL方式的話,只會輸出字符串data數據。
1 //ajax驗證用戶名非空 2 function Yhm() 3 { 4 $model=D("Text"); 5 $rules=array( 6 array('uid','require','用戶名不能爲空'), 7 ); 8 if(!$model->validate($rules)->create()) 9 { 10 $fh=$model->getError(); 11 $this->ajaxReturn($fh,"eval"); 12 } 13 else 14 { 15 $fh="OK"; 16 $this->ajaxReturn($fh,"eval"); 17 18 } 19 20 } 21
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>表單驗證</title> 6 <script src="../../../../../jquery-1.11.2.min.js"> 7 </script> 8 </head> 9 10 <body> 11 <form action="__ACTION__" method="post"> 12 <div>用戶名:<input type="text" id="uid" name="uid" /><span id="ts"></span></div><br /> 13 <div>密 碼:<input type="text" name="pwd" /></div> 14 <div>確認密碼:<input type="text" name="pwd1" /></div><br /> 15 <div>年齡:<input type="text" name="age" /></div><br /> 16 <div>郵箱:<input type="text" name="email" /></div><br /> 17 <div>姓名:<input type="text" name="name" /></div><br /> 18 <!--顯示錯誤信息 --> 19 <div style=" width:200px; height:30px; border:#F00 solid 2px; line-height:30px; vertical-align:middle; text-align:center;"><{$error}></div><br /> 20 <div><input type="submit" value="註冊" /></div> 21 </form> 22 </body> 23 <script type="text/javascript"> 24 $(document).ready(function(e) { 25 $("#uid").blur(function(){ 26 var uid=$(this).val(); 27 $.ajax({ 28 url:"__CONTROLLER__/Yhm", 29 data:{uid:uid},//這裏要傳的參數名必須和表單裏的name一致 30 type:"POST", 31 dataType:"TEXT", 32 success: function(data){ 33 $("#ts").html(data); 34 } 35 36 }); 37 38 }) 39 }); 40 41 </script> 42 </html>
顯示效果:
系統提供了Session管理和操做的完善支持,所有操做能夠經過一個內置的session函數完成,該函數能夠完成Session的設置、獲取、刪除和管理操做。
<?php namespace Home\Controller; use Think\Controller; class LoginController extends Controller { public function Login() { if(empty($_POST)) { $this->display(); } else { $model = D("users"); $uid = $_POST["uid"]; $pwd = $_POST["pwd"]; $attr = $model->field("Pwd")->find($uid); //echo $attr["pwd"]; if($pwd == $attr["pwd"]) { session("uid",$uid); $this->success("登陸成功","Main"); } else { $this->error("登陸失敗"); } } } public function Main() { //var_dump(session('?uid')); //有session時返回true //判斷session if(!session('?uid')) { $this->error("未登陸","Login"); exit(); } echo "主頁面"; } }
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文檔</title>
</head>
<body>
<h1>登陸</h1>
<form action="__ACTION__" method="post">
<div>用戶名:<input type="text" name="uid" /></div>
<div>密碼:<input type="password" name="pwd" /></div>
<input type="submit" value="登陸" />
</form>
</body>
</html>
<?php namespace Home\Controller; use Think\Controller; class CheckController extends Controller { //這個類是做爲全部控制器的父類 //控制登陸 function __construct() { parent::__construct(); if(!session('?uid')) { $this->error("未登陸",U("Login/Login")); exit(); } } }
5.防止用戶繞過登陸直接訪問操做方法作一個控制器的父類,在該父類裏面寫一個構造方法,構造方法裏面判斷session裏面有沒有值,若是沒值。。。若是有值。。。