laravel 路由使用(二)

我们在第一篇文章已经描述了在laravel中一些简单路由的使用.
那么我们来回顾一下

1,基础路由
2,多请求路由
3,路由传递参数
4,路由限制
5,控制器路由

有了第一篇文章的基础之后呢,我们可以学习以下的知识点

但是,经过上篇文章呢,可能会有的人有意见,为什么呢?

关于laravel的路由定义,很多人看到后有一个疑惑:

每条地址规则都要定义路由,岂不是很累?

这个问题确实是个问题,不过,laravel给了我们一个折中的方案----资源路由。
资源路由

控制器路由我认为主要是解决路由定义繁杂的情况,因为大型的应用业务复杂,控制器相当的多,我们不可能每一个控制器的方法都要定义一个路由。所以呢资源路由可以帮助我们完美的解决问题.但是在解决问题之前呢,我们先了解一下资源路由,何为资源呢(RESTful);
RESTful是一种设计思想、一种普遍接受的规范。

REST这个词,是Roy Thomas Fielding在他2000年的博士论文中提出的。
Fielding是一个非常重要的人,他是HTTP协议(1.0版和1.1版)的主要设计者、Apache服务器软件的
作者之一、Apache基金会的第一任主席。所以,他的这篇论文一经发表,就引起了关注,并且立即对互联
网开发产生了深远的影响。
Fielding将他对互联网软件的架构原则,定名为REST,即Representational State Transfer的缩
写。我对这个词组的翻译是"表现层状态转化"。
如果一个架构符合REST原则,就称它为RESTful架构。
要理解RESTful架构,最好的方法就是去理解Representational State Transfer这个词组到底是什
么意思,它的每一个词代表了什么涵义。如果你把这个名称搞懂了,也就不难体会REST是一种什么样的设
计。
大家一定要阅读该文章,理解RESTful架构,文章十分清晰的讲述了RESTful,本文就不再重复熬述。

Laravel 的资源控制器使得构建围绕资源的 RESTful 控制器变得毫无痛苦,例如,你可能想要在应用中创建一个控制器,用于处理关于图片存储的 HTTP 请求,使用 Artisan 命令 make:controller ,我们可以快速创建这样的控制器:

当然后面呢我们会详细给大家说一下artisan工具的使用

php artisan make:controller PhotoController

该 Artisan 命令将会生成一个控制器文件 app/Http/Controllers/PhotoController.php ,这个控制器包含了每一
个资源操作对应的方法。 接下来,可以为该控制器注册一个资源路由:

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

这个路由声明包含了处理图片资源 RESTful 动作的多个路由,相应地,Artisan 生成的控制器也已经为这些动作设置了对应的处理方法。

我们可以打开cmd命令行,来到我们放置laravel框架的根目录输入php artisan route:list会显示我们的路由信息,包括每条路由相应的请求方式呢,如下:

123.png

同样的来的呢我们的控制器下,可以看见准备好了各种方法,和上图呢相对应,从这样看呢,资源路由能够避免我们担心的那种情况呢.

同样呢我们还可以通过资源路由呢来定义部分资源如:

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

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


我们还可以这样去定义与上述的结果一样
Route::resource('photo', 'PhotoController',
['except' => ['create', 'store', 'update', 'destroy']]);

只不过是only和except要表达的意思
命名资源路由

默认情况下,所有资源控制器动作都有一个路由名称,然而,我们可以通过传入 names 数组来覆盖这些默认的名字:

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

上述呢都是资源路由那么刚接触laravel框架的可能还不大理解,没有关系,可以直接跳过这个部分来学习下面的,回头再来看这个

路由分组

比如一条非常简单的控制器路由:

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

这条路由的意思呢我们可以访问http://www.itbool.com/admin/login可以访问Admin模块下的UserController控制器中的getLogin`方法,这个呢大家都可以通过第一篇文章来理解.

那么何为路由分组呢??
比如我要在Admin模块下写注册登录和退出页面,那么考虑访问方式的话我们需要些以下路由:

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');

这样看的话我们书写的代码量很多,并且有很多相同的地方,那么怎么样解决呢?很简单,路由分组

首先我们注意:action admin/login admin是路由前缀 prefix去表示
再次注意
Admin\UserController Admin是控制器的命名空间,用namespace去表示,我们可不可以直接把这些相同的东西给省略掉呢,答案是可以的
那么分组下来就是:

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');
});

看到这个结果,是不是很惊讶呢?只不过是把它的路由前缀和命名空间给声明一下,这样大家是不是就理解了呢?

相信了解数据库的同学可以知道,在数据库中的表前缀是可以指定的,意思是一样的

命名路由

命名路由使生成 URLs 或者重定向到指定路由变得很方便,在定义路由时指定路由名称,然后使用数组键 as 指定路由别名:

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

上述呢是用匿名函数去相应,那么在控制器中如何使用呢:

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

如果你在使用路由分组,可以在路由分组属性数组中指定 as 关键字来为分组中的路由设置一个共用的路由名前缀:

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

那么在laravel框架中呢,路由就是这样的,通过第一篇和第二篇laravel中的路由大家基本可以掌握了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容