laravel 路由使用(二)

我們?cè)诘谝黄恼乱呀?jīng)描述了在laravel中一些簡(jiǎn)單路由的使用.
那么我們來(lái)回顧一下

1,基礎(chǔ)路由
2,多請(qǐng)求路由
3,路由傳遞參數(shù)
4,路由限制
5,控制器路由

有了第一篇文章的基礎(chǔ)之后呢,我們可以學(xué)習(xí)以下的知識(shí)點(diǎn)

但是,經(jīng)過(guò)上篇文章呢,可能會(huì)有的人有意見(jiàn),為什么呢?

關(guān)于laravel的路由定義,很多人看到后有一個(gè)疑惑:

每條地址規(guī)則都要定義路由郭计,豈不是很累喊衫?

這個(gè)問(wèn)題確實(shí)是個(gè)問(wèn)題处渣,不過(guò),laravel給了我們一個(gè)折中的方案----資源路由倒彰。
資源路由

控制器路由我認(rèn)為主要是解決路由定義繁雜的情況,因?yàn)榇笮偷膽?yīng)用業(yè)務(wù)復(fù)雜,控制器相當(dāng)?shù)亩嗯苋啵覀儾豢赡苊恳粋€(gè)控制器的方法都要定義一個(gè)路由。所以呢資源路由可以幫助我們完美的解決問(wèn)題.但是在解決問(wèn)題之前呢,我們先了解一下資源路由,何為資源呢(RESTful);
RESTful是一種設(shè)計(jì)思想埠巨、一種普遍接受的規(guī)范历谍。

REST這個(gè)詞,是Roy Thomas Fielding在他2000年的博士論文中提出的辣垒。
Fielding是一個(gè)非常重要的人望侈,他是HTTP協(xié)議(1.0版和1.1版)的主要設(shè)計(jì)者、Apache服務(wù)器軟件的
作者之一勋桶、Apache基金會(huì)的第一任主席脱衙。所以,他的這篇論文一經(jīng)發(fā)表例驹,就引起了關(guān)注捐韩,并且立即對(duì)互聯(lián)
網(wǎng)開(kāi)發(fā)產(chǎn)生了深遠(yuǎn)的影響。
Fielding將他對(duì)互聯(lián)網(wǎng)軟件的架構(gòu)原則鹃锈,定名為REST荤胁,即Representational State Transfer的縮
寫(xiě)。我對(duì)這個(gè)詞組的翻譯是"表現(xiàn)層狀態(tài)轉(zhuǎn)化"仪召。
如果一個(gè)架構(gòu)符合REST原則寨蹋,就稱(chēng)它為RESTful架構(gòu)松蒜。
要理解RESTful架構(gòu),最好的方法就是去理解Representational State Transfer這個(gè)詞組到底是什
么意思已旧,它的每一個(gè)詞代表了什么涵義秸苗。如果你把這個(gè)名稱(chēng)搞懂了,也就不難體會(huì)REST是一種什么樣的設(shè)
計(jì)运褪。
大家一定要閱讀該文章惊楼,理解RESTful架構(gòu),文章十分清晰的講述了RESTful秸讹,本文就不再重復(fù)熬述檀咙。

Laravel 的資源控制器使得構(gòu)建圍繞資源的 RESTful 控制器變得毫無(wú)痛苦,例如璃诀,你可能想要在應(yīng)用中創(chuàng)建一個(gè)控制器弧可,用于處理關(guān)于圖片存儲(chǔ)的 HTTP 請(qǐng)求,使用 Artisan 命令 make:controller 劣欢,我們可以快速創(chuàng)建這樣的控制器:

當(dāng)然后面呢我們會(huì)詳細(xì)給大家說(shuō)一下artisan工具的使用

php artisan make:controller PhotoController

該 Artisan 命令將會(huì)生成一個(gè)控制器文件 app/Http/Controllers/PhotoController.php 棕诵,這個(gè)控制器包含了每一
個(gè)資源操作對(duì)應(yīng)的方法。 接下來(lái)凿将,可以為該控制器注冊(cè)一個(gè)資源路由:

Route::resource('photo', 'PhotoController');

這個(gè)路由聲明包含了處理圖片資源 RESTful 動(dòng)作的多個(gè)路由校套,相應(yīng)地,Artisan 生成的控制器也已經(jīng)為這些動(dòng)作設(shè)置了對(duì)應(yīng)的處理方法牧抵。

我們可以打開(kāi)cmd命令行,來(lái)到我們放置laravel框架的根目錄輸入php artisan route:list會(huì)顯示我們的路由信息,包括每條路由相應(yīng)的請(qǐng)求方式呢,如下:

123.png

同樣的來(lái)的呢我們的控制器下,可以看見(jiàn)準(zhǔn)備好了各種方法,和上圖呢相對(duì)應(yīng),從這樣看呢,資源路由能夠避免我們擔(dān)心的那種情況呢.

同樣呢我們還可以通過(guò)資源路由呢來(lái)定義部分資源如:

定義部分資源路由
Route::resource('photo', 'PhotoController',
['only' => ['index', 'show']]);

這樣的意思呢是在PhotoController控制器中呢去使用index和show方法


我們還可以這樣去定義與上述的結(jié)果一樣
Route::resource('photo', 'PhotoController',
['except' => ['create', 'store', 'update', 'destroy']]);

只不過(guò)是only和except要表達(dá)的意思
命名資源路由

默認(rèn)情況下笛匙,所有資源控制器動(dòng)作都有一個(gè)路由名稱(chēng),然而犀变,我們可以通過(guò)傳入 names 數(shù)組來(lái)覆蓋這些默認(rèn)的名字:

Route::resource('photo', 'PhotoController',
['names' => ['create' => 'photo.build']]);

上述呢都是資源路由那么剛接觸laravel框架的可能還不大理解,沒(méi)有關(guān)系,可以直接跳過(guò)這個(gè)部分來(lái)學(xué)習(xí)下面的,回頭再來(lái)看這個(gè)

路由分組

比如一條非常簡(jiǎn)單的控制器路由:

Route::get('admin/login','Admin\UserController@getLogin');

這條路由的意思呢我們可以訪(fǎng)問(wèn)http://www.itbool.com/admin/login可以訪(fǎng)問(wèn)Admin模塊下的UserController控制器中的getLogin`方法,這個(gè)呢大家都可以通過(guò)第一篇文章來(lái)理解.

那么何為路由分組呢??
比如我要在Admin模塊下寫(xiě)注冊(cè)登錄和退出頁(yè)面,那么考慮訪(fǎng)問(wèn)方式的話(huà)我們需要些以下路由:

Route::get('admin/login','Admin\UserController@getLogin');
Route::post('admin/login','Admin\UserController@postLogin');
Route::get('admin/register','Admin\UserController@getRegister');
Route::get('admin/register','Admin\UserController@postRegister');
Route::get('admin/logout','Admin\UserController@getLogout');

這樣看的話(huà)我們書(shū)寫(xiě)的代碼量很多,并且有很多相同的地方,那么怎么樣解決呢?很簡(jiǎn)單,路由分組

首先我們注意:action admin/login admin是路由前綴 prefix去表示
再次注意
Admin\UserController Admin是控制器的命名空間,用namespace去表示,我們可不可以直接把這些相同的東西給省略掉呢,答案是可以的
那么分組下來(lái)就是:

Route::group(['prefix'=>'admin','namespace=>Admin'],function(){
    Route::get('login','UserController@getLogin');
    Route::post('login','UserController@postLogin');
    Route::get('register','UserController@getRegister');
    Route::get('register','UserController@postRegister');
    Route::get('logout','UserController@getLogout');
});

看到這個(gè)結(jié)果,是不是很驚訝呢?只不過(guò)是把它的路由前綴和命名空間給聲明一下,這樣大家是不是就理解了呢?

相信了解數(shù)據(jù)庫(kù)的同學(xué)可以知道,在數(shù)據(jù)庫(kù)中的表前綴是可以指定的,意思是一樣的

命名路由

命名路由使生成 URLs 或者重定向到指定路由變得很方便妹孙,在定義路由時(shí)指定路由名稱(chēng),然后使用數(shù)組鍵 as 指定路由別名:

Route::get('user/profile', ['as' => 'profile', function () {
//
}]);

上述呢是用匿名函數(shù)去相應(yīng),那么在控制器中如何使用呢:

Route::get('user/profile', [
'as' => 'profile', 'uses' => 'UserController@showProfile'
]);
路由分組 & 命名路由

如果你在使用路由分組弛作,可以在路由分組屬性數(shù)組中指定 as 關(guān)鍵字來(lái)為分組中的路由設(shè)置一個(gè)共用的路由名前綴:

Route::group(['as' => 'admin::'], function () {
Route::get('dashboard', ['as' => 'dashboard', function () {
// 路由被命名為 "admin::dashboard"
}]);
});

那么在laravel框架中呢,路由就是這樣的,通過(guò)第一篇和第二篇laravel中的路由大家基本可以掌握了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末涕蜂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子映琳,更是在濱河造成了極大的恐慌机隙,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件萨西,死亡現(xiàn)場(chǎng)離奇詭異有鹿,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)谎脯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)葱跋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事娱俺∩晕叮” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我镀赌,道長(zhǎng),這世上最難降的妖魔是什么掂碱? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮慎冤,結(jié)果婚禮上疼燥,老公的妹妹穿的比我還像新娘。我一直安慰自己蚁堤,他們只是感情好醉者,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著违寿,像睡著了一般湃交。 火紅的嫁衣襯著肌膚如雪熟空。 梳的紋絲不亂的頭發(fā)上藤巢,一...
    開(kāi)封第一講書(shū)人閱讀 52,255評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音息罗,去河邊找鬼掂咒。 笑死,一個(gè)胖子當(dāng)著我的面吹牛迈喉,可吹牛的內(nèi)容都是我干的绍刮。 我是一名探鬼主播,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼挨摸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼孩革!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起得运,我...
    開(kāi)封第一講書(shū)人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤膝蜈,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后熔掺,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體饱搏,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年置逻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了推沸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鬓催,靈堂內(nèi)的尸體忽然破棺而出肺素,到底是詐尸還是另有隱情,我是刑警寧澤宇驾,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布压怠,位于F島的核電站,受9級(jí)特大地震影響飞苇,放射性物質(zhì)發(fā)生泄漏菌瘫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一布卡、第九天 我趴在偏房一處隱蔽的房頂上張望雨让。 院中可真熱鬧,春花似錦忿等、人聲如沸栖忠。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)庵寞。三九已至,卻和暖如春薛匪,著一層夾襖步出監(jiān)牢的瞬間捐川,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工逸尖, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留古沥,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓娇跟,卻偏偏與公主長(zhǎng)得像岩齿,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子苞俘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容