長春網(wǎng)站建設(shè) 信賴吉網(wǎng)傳媒什么是競價推廣
本節(jié)課我們來了解一下路由方面的知識,然后簡單的使用一下路由的功能。
一.路由簡介
1. 路由的作用就是讓 URL 地址更加的規(guī)范和優(yōu)雅,或者說更加簡潔;
2. 設(shè)置路由對 URL 的檢測、驗(yàn)證等一系列操作提供了極大的便利性;
3. 路由是默認(rèn)開啟的,如果想要關(guān)閉路由,在 config/app.php 配置;
?
// 是否啟用路由
'with_route' => false,
4. 路由的配置文件在 config/route.php 中,定義文件在 route/app.php;
5. route 目錄下的定義文件的文件名隨機(jī),都有效,或多個均有效果;
6. 創(chuàng)建一個 Address 控制器類,創(chuàng)建兩個方法,具體如下:
class Address
{
public function index()
{
return 'index';
}
public function details($id)
{
return 'details 目前調(diào)用的 id:'.$id;
}
}
7. 為了讓我們路由的課程觀看更加直觀,我們采用內(nèi)置服務(wù)器的方式來演示;
8. 通過命令行模式鍵入到當(dāng)前項(xiàng)目目錄后輸入命令:php think run 啟動;
9. 此時,public 目錄會自動被綁定到頂級域名:127.0.0.1:8000 上;
10. 我們只要在地址欄鍵入:http://localhost:8000 或(127.0.0.1:8000)即可;
二.路由定義
1. 在沒有定義路由規(guī)則的情況下,我們訪問 address/details 包含 id 的 URL 為:
http://localhost:8000/address/details/id/5 //或者.../id/5.html
2. 將這個 URL 定義路由規(guī)則,在根目錄 route 下的 app.php 里配置;
Route::rule('details/:id', 'Address/details');
3. 當(dāng)配置好路由規(guī)則后,會出現(xiàn)非法請求的錯誤,我們需要用路由規(guī)則的 URL 訪問;
http://localhost:8000/details/5 //或者.../details/5.html
4. rule()方法是默認(rèn)請求是 any,即任何請求類型均可,第三參數(shù)可以限制:
Route::rule('details/:id', 'Address/xxx, 'GET'); //GET
Route::rule('details/:id', 'Address/xxx, 'POST'); //POST
Route::rule('details/:id', 'Address/xxx, 'GET|POST'); //GET 或 POST
5. 所有請求方式(快捷方式):GET(get)、POST(post)、DELETE(delete)、PUT(put)
?
PATCH(patch)、*(any,任意請求方式)
Route::get(...)、Route::post(...)、Route::delete(...)...
6. 快捷方式,就是直接用 Route::get、Route::post 等方式即可,無須第三參數(shù);
7. 當(dāng)我們設(shè)置了強(qiáng)制路由的時候,訪問首頁就會報錯,必須強(qiáng)制設(shè)置首頁路由;
8. 開始強(qiáng)制路由,需要在 route.php 里面進(jìn)行配置,然后配置首頁路由;
'url_route_must' => true,
Route::rule('/', 'Index/index'); //反斜杠就是首頁默認(rèn)訪問的地址
9. 在路由的規(guī)則表達(dá)式中,有多種地址的配置規(guī)則,具體如下:
//靜態(tài)路由
Route::rule('ad', 'Address/index');
//靜態(tài)動態(tài)結(jié)合的地址
Route::rule('details/:id', 'Address/details');
//多參數(shù)靜態(tài)動態(tài)結(jié)合的地址
Route::rule('search/:id/:uid', 'Address/search');
//全動態(tài)地址,不限制是否 search 固定
Route::rule(':search/:id/:uid', 'Address/search');
//包含可選參數(shù)的地址
Route::rule('find/:id/[:content]', 'Address/find');
//規(guī)則完全匹配的地址
Route::rule('search/:id/:uid$', 'Address/search');
10. 路由定義好之后,我們在控制器要創(chuàng)建這個路由地址,可以通過 url()方法實(shí)現(xiàn);
?
//不定義標(biāo)識的做法
return url('Address/details', ['id'=>10]);
//定義標(biāo)識的做法
Route::rule('details/:id', 'Address/details')->name('det');
return url('det', ['id'=>10]);