- ThinkPHP實戰
- 夏磊
- 440字
- 2020-11-28 18:26:54
4.6 URL生成
ThinkPHP一個強大之處在于可以根據不同的URL模式來生成不同的URL地址,為此ThinkPHP提供了“U”函數,該函數確保了項目在移植過程中不受運行環境的影響。
U方法定義如下:
U(地址表達式,參數,是否顯示偽靜態后綴,是否顯示域名)
4.6.1 地址表達式
地址表達式格式如下:
[模塊/控制器/操作#錨點@域名]?參數1=值1&參數2=值2...
如果沒有指定模塊名,則ThinkPHP使用當前模塊名,來看以下例子:
U('User/add')//生成User控制器的add操作的URL U('Blog/read? id=1')//生成Blog控制器的read操作且id為1的URL U('Home/Index/index')//生成Home模塊下Index控制器的index操作的URL
4.6.2 參數
參數支持數組和查詢字符串形式,所以以下方式是等效的:
● U(‘User/view', array(‘id'=>1, ‘role'=>‘admin'))
● U(‘User/view', ‘id=1&role=admin')
4.6.3 偽靜態后綴
該參數為true時,系統讀取URL_HTML_SUFFIX配置來生成URL,如果需要臨時使用新規則,可以直接加參數后綴名,例如:
U('Blog/view', array('id'=>1), 'shtml')
4.6.4 URL模式處理
不同的URL_MODEL會導致生成不同的URL地址,以U(‘Blog/view', array(‘id'=>1), ‘shtml')為例。
普通模式:
/index.php? m=Home&c=Blog&a=view&id=1
pathinfo模式:
/index.php/Home/Blog/view/id/1.shtml
rewrite模式:
/Home/Blog/view/id/1.shtml
兼容模式:
/index.php? s=/Home/Blog/view/id/1.shtml
如果“URL_CASE_INSENSITIVE”為“true”, ThinkPHP會將生成結果統一轉換為小寫。
4.6.5 生成路由地址
假設定義了以下路由規則:
'blog/:id\d'=>'Blog/read'
那么可以使用U(‘/blog/1')來生成/index.php/Home/blog/1.shtml。
推薦閱讀
- JavaScript從入門到精通(微視頻精編版)
- 微信公眾平臺與小程序開發:從零搭建整套系統
- Java面向對象軟件開發
- .NET 4.0面向對象編程漫談:基礎篇
- Mastering LibGDX Game Development
- INSTANT Mercurial SCM Essentials How-to
- H5頁面設計:Mugeda版(微課版)
- Hands-On Functional Programming with TypeScript
- Oracle Exadata專家手冊
- NGINX Cookbook
- Android玩家必備
- R Data Science Essentials
- Java服務端研發知識圖譜
- 小學生C++趣味編程從入門到精通
- Unreal Engine Game Development Cookbook