ThinkPHP3.1新特性之Action參數(shù)綁定
ThinkPHP3.1版的Action參數(shù)綁定功能提供了URL變量和操作方法的參數(shù)綁定支持,這一功能可以使得你的操作方法定義和參數(shù)獲取更加清晰,也便于跨模塊調(diào)用操作方法。這一新特性對(duì)以往的操作方法使用沒(méi)有任何影響,你也可以用新的方式來(lái)改造以往的操作方法定義。
Action參數(shù)綁定的原理是把URL中的參數(shù)(不包括分組、模塊和操作地址)和控制器的操作方法中的參數(shù)進(jìn)行綁定。例如,我們給Blog模塊定義了兩個(gè)操作方法read和archive方法,由于read操作需要指定一個(gè)id參數(shù),archive方法需要指定年份(year)和月份(month)兩個(gè)參數(shù)。
class BlogAction extends Action{ public function read($id){ echo 'id='.$id; $Blog = M('Blog'); $Blog->find($id); } public function archive($year='2012',$month='01'){ echo 'year='.$year.'&month='.$month; $Blog = M('Blog'); $year = $year; $month = $month; $begin_time = strtotime($year . $month . "01"); $end_time = strtotime("+1 month", $begin_time); $map['create_time'] = array(array('gt',$begin_time),array('lt',$end_time)); $map['status'] = 1; $list = $Blog->where($map)->select(); } }
URL的訪問(wèn)地址分別是:
http://serverName/index.php/Blog/read/id/5 http://serverName/index.php/Blog/archive/year/2012/month/03
兩個(gè)URL地址中的id參數(shù)和year和month參數(shù)會(huì)自動(dòng)和read操作方法以及archive操作方法的同名參數(shù)綁定。
輸出的結(jié)果依次是:
id=5 year=2012&month=03
Action參數(shù)綁定的參數(shù)必須和URL中傳入的參數(shù)名稱一致,但是參數(shù)順序不需要一致。也就是說(shuō)
http://serverName/index.php/Blog/archive/month/03/year/2012
和上面的訪問(wèn)結(jié)果是一致的,URL中的參數(shù)順序和操作方法中的參數(shù)順序都可以隨意調(diào)整,關(guān)鍵是確保參數(shù)名稱一致即可。
如果用戶訪問(wèn)的URL地址是(至于為什么會(huì)這么訪問(wèn)暫且不提):
http://serverName/index.php/Blog/read/
那么會(huì)拋出下面的異常提示:
參數(shù)錯(cuò)誤:id
報(bào)錯(cuò)的原因很簡(jiǎn)單,因?yàn)樵趫?zhí)行read操作方法的時(shí)候,id參數(shù)是必須傳入?yún)?shù)的,但是方法無(wú)法從URL地址中獲取正確的id參數(shù)信息。由于我們不能相信用戶的任何輸入,因此建議你給read方法的id參數(shù)添加默認(rèn)值,例如:
public function read($id=0){ echo 'id='.$id; $Blog = M('Blog'); $Blog->find($id); }
這樣,當(dāng)我們?cè)L問(wèn)
http://serverName/index.php/Blog/read/
的時(shí)候 就會(huì)輸出
id=0
當(dāng)我們?cè)L問(wèn)
http://serverName/index.php/Blog/archive/
的時(shí)候,輸出:
year=2012&month=01
- Thinkphp5.0 框架的請(qǐng)求方式與響應(yīng)方式分析
- thinkPHP5.1框架路由::get、post請(qǐng)求簡(jiǎn)單用法示例
- thinkPHP5.0框架應(yīng)用請(qǐng)求生命周期分析
- thinkphp中ajax與php響應(yīng)過(guò)程詳解
- thinkPHP中U方法加密傳遞參數(shù)功能示例
- thinkphp中html:list標(biāo)簽傳遞多個(gè)參數(shù)實(shí)例
- ThinkPHP采用GET方式獲取中文參數(shù)查詢無(wú)結(jié)果的解決方法
- thinkPHP5框架閉包函數(shù)與子查詢傳參用法示例
- ThinkPHP連接數(shù)據(jù)庫(kù)操作示例【基于DSN方式和數(shù)組傳參的方式】
- TP5框架請(qǐng)求響應(yīng)參數(shù)實(shí)例分析
相關(guān)文章
生成隨機(jī)字符串和驗(yàn)證碼的類(lèi)的PHP實(shí)例
這篇文章主要介紹了生成隨機(jī)字符串和驗(yàn)證碼的類(lèi)的PHP實(shí)例,有需要的朋友可以參考一下2013-12-12使用 laravel sms 構(gòu)建短信驗(yàn)證碼發(fā)送校驗(yàn)功能
本文通過(guò)示例代碼給大家介紹了使用 laravel-sms 構(gòu)建短信驗(yàn)證碼發(fā)送校驗(yàn)?zāi)K,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-11-11Thinkphp實(shí)現(xiàn)MySQL讀寫(xiě)分離操作示例
這篇文章主要介紹了Thinkphp實(shí)現(xiàn)MySQL讀寫(xiě)分離的方法,需要的朋友可以參考下2014-06-06yii2-GridView在開(kāi)發(fā)中常用的功能及技巧總結(jié)
本篇文章主要介紹了yii2-GridView在開(kāi)發(fā)中常用的功能及技巧總結(jié),數(shù)據(jù)網(wǎng)格或者說(shuō) GridView 小部件是Yii中最強(qiáng)大的部件之一。有興趣的可以了解一下。2017-01-01帝國(guó)CMS留言板回復(fù)后發(fā)送EMAIL通知客戶
這篇文章主要介紹了帝國(guó)CMS留言板回復(fù)后發(fā)送EMAIL通知客戶的方法和具體修改示例,有需要的小伙伴可以參考下。2015-07-07一文掌握PHP Xdebug 本地與遠(yuǎn)程調(diào)試(小結(jié))
這篇文章主要介紹了一文掌握PHP Xdebug 本地與遠(yuǎn)程調(diào)試(小結(jié)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-04-04