TP5 路由使用

2022-07-31 18:36:13 字數 3522 閱讀 8301

tp5路由官方文件  

對於咱們的pc站來說,如果是在不是用路由的情況下,路徑是很長的,看起來就很不友好,

當然啦,具體為什麼要使用路由呢,

我考慮的是 第乙個可讀性和友好性上比較好,第二是我們隱藏了自己專案的實際路徑,這會對安全性帶來幫助。

這只是我個人的看法。

我們要熟悉官方文件  使用的依據肯定是依照文件上來的,我們不可以閉門造車。既然使用tp5就要根據tp5設定的規則來。

//

是否開啟路由

'url_route_on' => true,

//路由使用完整匹配

'route_complete_match' => true,

//是否強制使用路由

'url_route_must' => true,

看一下文件中的路由引數 提供了很多方法開快捷定義路由的,

我們這裡使用

route::get() 和route::post()兩種方式來配置路由 

在路由檔案中宣告使用路由

use think\route;

定義第乙個路由 比如

route::get('hello','index/test/hello');

我們可以在

index/test/hello

對應的hello 方法中 echo ''你好';

訪問  網域名稱/hello

可以看到在瀏覽器上輸出 

你好

接下來我們修改一下路由

route::get('hello/:id','index/test/hello');

在hello 方法中 

dump(input('get.id'));

dump(input());

dump(request()->get());

dump(request()->get('id'));

dump(request()->param());

dump(request()->param('id'));

dump(request()->route());

dump(request()->route('id'));

返回結果是依次是

null

array (size=1)

'id' => string '10' (length=2)

array (size=0)

empty

null

array (size=1)

'id' => string '10' (length=2)

string '10' (length=2)

array (size=1)

'id' => string '10' (length=2)

string '10' (length=2)

其中

dump(input('get.id'));

dump(request()->get());

dump(request()->get('id'));

這三種獲取引數的方式 ,在定義了路由,並且路由中定義了:id 這種變數時 是獲取不到引數的

另外下面這種方式可以獲取到引數

public

function hello($id)

這裡輸出$id也可以獲取到值。但是這裡的 $id 必須要和 路由中的 :id 對應 變數必須相同

另外如果 在鏈結後面跟上引數

比如  網域名稱/hello/10?name=123

使用上面的獲取引數的方法 來獲取name值 是都可以獲取到值的,所以這裡我們就需要需要合適的獲取引數方法了

我們測試一下 

dump(input());

dump(request()->get());

dump(request()->route());

dump(request()->param());

array (size=2)

'name' => string '123' (length=3)

'id' => string '10' (length=2)

array (size=1)

'name' => string '123' (length=3)

array (size=1)

'id' => string '10' (length=2)

array (size=2)

'name' => string '123' (length=3)

'id' => string '10' (length=2)

如果我們只想要自己定義的路由變數 就需要使用 

request()->route()

獲取引數 

還有我們看到其中的 

request()->get()

獲取的引數只獲得了我們 ? 後面的引數 ,並且在上面的沒有新增name時是沒有獲取到引數的

所以路由裡面的:id這種變數 我們不能使用

request()->get()

來獲得引數

還有強調一下 我們最好不要用能獲取?後面引數的方法來獲取引數。如果實在是需要獲取。我們最好能夠準備的指定我們需要獲取的引數變數

我們能夠定義路由,並實際的訪問了 我們看一下 在網頁上怎麼運用

你可能會說,既然我們定義了路由。那麼直接上鏈結上拼接上鏈結不就可以了

我想說 這樣是萬萬不好的

比如說我的上面的鏈結 /hello/:id  在鏈結上直接輸入 

這樣的。當前這可以訪問。但是這樣的鏈結在運營的過程中使用的越來越多 如果哪天看著這個鏈結不順眼了。或者說,老闆找你,把這個鏈結改一下。難道你要乙個乙個的去找去改嗎,這樣的很麻煩。

既然說到這裡了。必然會有解決辦法的

我們可以看官方文件。url生成

我們在網頁鏈結上直接按照原來沒有定義路由時的思路來 寫鏈結 

tp5 生成鏈結的方式是使用url 

//

這個是迴圈資料時拼接變數

//

這裡直接使用a標籤會被解析 所以用漢字代替了

a標籤 href="">我是乙個鏈結

/a標籤

開啟網頁 我們把滑鼠放到標題上 可以看到瀏覽器下方的狀態列上 實際的鏈結就是我們需要的。網域名稱/hello/1.html

這裡在網頁上直接生成的鏈結會帶有字尾html 沒有這個html也是可以訪問的。

現在我的鏈結是不是我們想要的理想效果了

我們這裡改一下路由

route::get('news/:id','index/test/hello');

重新整理頁面 是不是鏈結已經更新了 網域名稱/news/1.html

ok 測試暫時告一段落 這樣基本夠平時的使用的。以後有發現會及時更新的

TP5路由的位置導致錯誤

測試 js id test test js method get id d id info test test info method get id d 這一行的路由規則 id test test js method get id d 會遮蔽下一行的規則,導致下一行的路由永遠不生效 比如 www.t...

TP5 路由三種設定方式

thinkphp5.0的路由比較靈活,並且不需要強制定義,可以總結歸納為如下三種方式 一 普通模式 關閉路由,完全使用預設的path info方式url 1.url route on false,路由關閉後,不會解析任何路由規則,採用預設的path info 模式訪問url 1.http serve...

tp5快取使用

引入 usethink cache 使用 options 快取型別為file type file 快取有效期為永久有效 expire 0,快取字首 prefix think 指定快取目錄 path runtime cache cache connect options if cache has th...