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