本文實例講述了thinkphp框架實現(xiàn)路由重定義簡化url訪問地址的方法。分享給大家供大家參考,具體如下:
如果按照正常訪問的話,則需要輸入一長串的url地址,這樣會顯得十分冗長,我可以可以通過對路由規(guī)則的重新定義簡化url訪問地址。
1
2
3
4
5
6
7
8
9
10
11
|
<?php namespace app\index\controller; class Index{ public function index(){ return '我是index' ; } public function hello( $name = 'World' ){ return 'Hello' . $name . '!' ; } } ?> |
本來的訪問路徑應(yīng)該是:
localhost/tp/index.php/index/index/hello
我們在路由定義文件(application/route.php)里面添加一些路由規(guī)則,如下:
1
2
3
|
return [ // 添加路由規(guī)則 路由到 index控制器的hello操作方法' hello/:name' => 'index/index/hello', ]; |
這是以hello開頭的并且?guī)?shù)的訪問都會路由到index控制器的hello操作方法。
此時路徑可以寫為:
localhost/tp/hello/Thinkphp
此時輸出結(jié)果為:
HelloThinkphp!
改變路由規(guī)則后若使用原來的路徑訪問方法后,則會出現(xiàn)錯誤。
但此時有一個問題是,如果訪問地址為:
localhost/tp/hello
話,會拋出 模板不存在的錯誤,因為在訪問時,沒有傳參,而在定義路由規(guī)則時,則帶有參數(shù)。
解決辦法是在修改路由規(guī)則為:
1
2
3
|
return [ // 添加路由規(guī)則 路由到 index控制器的hello操作方法' hello/[:name'] => 'index/index/hello', ]; |
使用[]
把路由規(guī)則中的變量包起來,就表示該變量為可選,接下來就可以正常訪問了。
當(dāng)name參數(shù)沒有傳入值的時候,hello方法的name參數(shù)有默認(rèn)值World,所以輸出的內(nèi)容為
Hello,World!
除了路由配置文件中定義之外,還可以采用動態(tài)定義路由規(guī)則的方式定義,例如在路由配置文件(application/route.php)的開頭直接添加下面的方法:
1
2
3
|
use think\Route; Route::rule( 'hello/:name' , 'index/hello' ); |
完成的效果和使用配置方式定義是一樣的。
無論是配置方式還是通過Route類的方法定義路由,都統(tǒng)一放到路由配置文件application/route.php文件中
希望本文所述對大家基于ThinkPHP框架的PHP程序設(shè)計有所幫助。
原文鏈接:https://blog.csdn.net/zzh_meng520/article/details/55251546