首页 > 作文

Laravel5.1 框架路由基础详解

更新时间:2023-04-08 03:54:28 阅读: 评论:0

本文实例讲述了laravel5.1 框架路由基础。分享给大家供大家参考,具体如下:

什么是路由?

大k简单的说下,路由是用户访问我们程序的一个入口,比方说 你在浏览器输入:www.m昆虫记读书笔记摘抄yblogs.com/create 就会打开一个页面,我们接收到这一个请求后后台需要做一些事儿来反馈给用户一些东西。

1 路由的实例

首先呢laravel的路由定义在这个路径下:app/http/routes.php

/** * 这是laravel提供给我们的主界面路由,输入 localhost:8000(如果你用的artisan控制台)就可以看到主界面啦 */route::get('/', function () {  return view('welcome');});/** * 我们自己定义了get路由 * 浏览器输入 localhos护肤除皱t: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('/ur/{id}', function ($id){  return '咱成功的拿到了一个用户id:' . $id;});

3.2 可选参数

/** * 可选参数只要在参数名后面跟个问号就好,然后在闭包中给它个默认值就好。 */route::get('/ur/{id}/name/{name?}/descriptions/{description广告设计就业前景?}', function ($ur_id, $ur_name = 'k', $ur_description = null){  return '咱捕获了一堆参数 其中必选参数:'.$ur_id.'可选的两个参数 名字:'.$ur_name.'简介:'.$ur_description;});

3.3 使用正则约束参数

大k呢在上面两个例子中写的不太严谨,就那第一个例子说吧,一般id都是正整数的,可是第一个例子里咱输入一串鸟文它也能识别到,咱应该加串儿正则让它变得挑食点儿:

/** * 参数的写法简单 加个花括号就行,然后在后面的闭包中捕获它就行。 * 后面跟了个where方法,里面限制了id参数必须是数字。 */route::get('/ur/{id}', function ($id){  return '咱成功的拿到了一个用户id(现在我只能接受数字):' . $id;})->where('id','[0-9]+');/** * 如果对多个参数进行约束,那咱就得在where方法中给数组啦。 */route::get('/ur/{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/routerviceprovider.php 文件中boot方法,添加一段代码就行:

public function boot(router $router){  $router->pattern('id', '[0-9]+');  parent::boot($router);}

然后修改一下刚2035年的中国刚的例子:

route::get('/ur/{id}', function ($id){  return '咱成功的拿到了一个用户id(现在我只能接受数字):' . $id;});route::get('/ur/{id}/name/{name?}', function ($id, $name = 'k'){  return '咱成功的拿到了一个用户id(现在我只能接受数字):' . $id . '名字:' . $name;})->where(老年斑的去除'name','[a-za-z]+');

4 给路由起名字

为啥要给路由起名字?咱想一下这么一个场景啊 : 进到某一个路由后 我们需要在数据库中更新一条信息,当信息更新完了后要跳转到另外一条路由,这条路由的路径是:localhost:8000/xxxx/sdfsa/xasfes/xaefsggd/xaeqwes/xadfa(当然啦 我是乱敲的) 难道我们要手动打xxxx/sdfsa/xa…么?或者你可以说 copy一下,但是我们给这条路由起一个名字,直接使用名字来跳转 岂不美哉?

/** * 现在比如说 用户在更新他的名字 拿到名字后在数据库中更新 更新完了跳转到另一个路由 */route::get('/ur/{id}/name/{name}', function ($id, $name){  // 更新数据库操作  // ...  // 跳转  return redirect()->route('showur',['name' => $name]);})->where('name','[a-za-z]+');/** * 另一条路由 (路径瞎写的啊) * 在路径后面加一个数组 as=>router_name 就是这么个流程。 */route::get('/admin/private/ur/show/{name}', ['as' => 'showur', function($name){  return '哇 你的名字已经更新完啦:'.$name;}]);

本文发布于:2023-04-08 03:54:27,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/d11207f83922ebeae47eabef84e09613.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Laravel5.1 框架路由基础详解.doc

本文 PDF 下载地址:Laravel5.1 框架路由基础详解.pdf

标签:路由   参数   方法   就行
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图