Laravel5.1 框架路由基础详解
本文实例讲述了Laravel5.1框架路由基础。分享给大家供大家参考,具体如下:
什么是路由?
大K简单的说下,路由是用户访问我们程序的一个入口,比方说你在浏览器输入:www.myblogs.com/create就会打开一个页面,我们接收到这一个请求后后台需要做一些事儿来反馈给用户一些东西。
1路由的实例
首先呢laravel的路由定义在这个路径下:app/Http/routes.php
/** *这是Laravel提供给我们的主界面路由,输入localhost:8000(如果你用的artisan控制台)就可以看到主界面啦 */ Route::get('/',function(){ returnview('welcome'); }); /** *我们自己定义了get路由 *浏览器输入localhost:8000/get就可以看到啦。 */ Route::get('/get',function(){ return'这是我们自己定义的get路由'; }); /** *我们自己定义了post路由 */ Route::get('/post',function(){ return'这是我们自己定义的post路由'; });
备注:路由方法不只有get和post还有put啊delete啊等,具体可以根据实际情况使用。
2匹配多种路由
/** *使用match可以匹配多种方法到一个路径下,localhost:8000/hello支持GET方法也支持POST方法。 */ Route::match(['get','post'],'/hello',function(){ return'hi~我是大K'; }); /** *any顾名思义它可以匹配所有的方法。 */ Route::any('/any',function(){ return'any能匹配所有的方法'; });
3路由参数
咱在写项目的时候啊经常需要从路由中捕获参数以便之后的处理,那如何声明呢,继续看:
3.1必选参数
/** *参数的写法简单加个花括号就行,然后在后面的闭包中捕获它就行。 */ Route::get('/user/{id}',function($id){ return'咱成功的拿到了一个用户ID:'.$id; });
3.2可选参数
/** *可选参数只要在参数名后面跟个问号就好,然后在闭包中给它个默认值就好。 */ Route::get('/user/{id}/name/{name?}/descriptions/{description?}',function($user_id,$user_name='K',$user_description=null){ return'咱捕获了一堆参数其中必选参数:'.$user_id.'可选的两个参数名字:'.$user_name.'简介:'.$user_description; });
3.3使用正则约束参数
大K呢在上面两个例子中写的不太严谨,就那第一个例子说吧,一般id都是正整数的,可是第一个例子里咱输入一串鸟文它也能识别到,咱应该加串儿正则让它变得挑食点儿:
/** *参数的写法简单加个花括号就行,然后在后面的闭包中捕获它就行。 *后面跟了个where方法,里面限制了id参数必须是数字。 */ Route::get('/user/{id}',function($id){ return'咱成功的拿到了一个用户ID(现在我只能接受数字):'.$id; })->where('id','[0-9]+'); /** *如果对多个参数进行约束,那咱就得在where方法中给数组啦。 */ Route::get('/user/{id}/name/{name?}',function($id,$name='k'){ return'咱成功的拿到了一个用户ID(现在我只能接受数字):'.$id.'名字:'.$name; })->where(['id'=>'[0-9]+','name'=>'[a-zA-Z]+']);
3.4全局约束(小拓展)
在实际开发中啊,一般参数为ID的一般都是整数,如果咱每个路由后面都跟个where是不是倍儿烦躁?甭担心,有一步到位的方法:在app/Providers/RouteServiceProvider.php文件中boot方法,添加一段代码就行:
publicfunctionboot(Router$router) { $router->pattern('id','[0-9]+'); parent::boot($router); }
然后修改一下刚刚的例子:
Route::get('/user/{id}',function($id){ return'咱成功的拿到了一个用户ID(现在我只能接受数字):'.$id; }); Route::get('/user/{id}/name/{name?}',function($id,$name='k'){ return'咱成功的拿到了一个用户ID(现在我只能接受数字):'.$id.'名字:'.$name; })->where('name','[A-Za-z]+');
4给路由起名字
为啥要给路由起名字?咱想一下这么一个场景啊:进到某一个路由后我们需要在数据库中更新一条信息,当信息更新完了后要跳转到另外一条路由,这条路由的路径是:localhost:8000/xxxx/sdfsa/xasfes/xaefsggd/xaeqwes/xadfase(当然啦我是乱敲的)难道我们要手动打xxxx/sdfsa/xa...么?或者你可以说copy一下,但是我们给这条路由起一个名字,直接使用名字来跳转岂不美哉?
/** *现在比如说用户在更新他的名字拿到名字后在数据库中更新更新完了跳转到另一个路由 */ Route::get('/user/{id}/name/{name}',function($id,$name){ //更新数据库操作 //... //跳转 returnredirect()->route('showUser',['name'=>$name]); })->where('name','[A-Za-z]+'); /** *另一条路由(路径瞎写的啊) *在路径后面加一个数组as=>router_name就是这么个流程。 */ Route::get('/admin/private/user/show/{name}',['as'=>'showUser',function($name){ return'哇你的名字已经更新完啦:'.$name; }]);
更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。