laravel5.1基础路由的使用

本文介绍了laravel5.1中的路由概念和使用,包括基础路由、多请求路由、路由传参、路由限制和控制器与路由的结合。相较于Thinkphp,laravel提供了更灵活的路由定义方式,允许开发者自定义请求映射,简化了多请求类型的路由定义,并能直接在路由中进行参数限制。同时,文章展示了如何通过路由与控制器交互,实现功能响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

路由的理解

我们所了解的很多框架通常都有自己有路由的定义规则,个人觉得Thinkphp是一个更容易让新手去接触和学习的一个框架。然而在TP中的默认路由规则是http://www.itbool.com/Model/Controller/Action,假如我们访问一个地址是http://www.itbool.com/Home/Index/index,默认请求会去访问Home模块下的Indexcontroller控制器类下的index方法,说到这里呢,这是在TP框架中路由的使用。

从上述中去理解,个人觉得在TP框架中定义的路由规范可以直接拿出来使用,非常的容易去理解,但是使用起来呢很不灵活,因为我们必须要遵循TP中的那种规范,比如说我想要通过向http://www.itbool.com/Admin/article/addPOST一个数据以添加一篇文章,处理这个过程的实际是Admin\TopicControlle类的create方法,且该方法只接受POST请求,这时候似乎大多数框架就要通过写更多的代码实现了。

上述呢,是在TP中路由的一种定义规范,但是相比于laravel呢?
laravel中路由的定义
1,简单的说就是将用户的请求转发给相应的程序去处理
2,作用建立url和程序之间的映射
3,请求类型get,put,post,patch,delete等
laravel的路由器与控制器的关系,需要明确的在<project>/app/Http/routes.php
下面呢,我们一起来学西laravel中的路由

基础路由

格式如下

/*
用Get方式去请求Home/index这个地址的时候,用匿名函数响应
*/
Route::get('Home/index',function(){
    return 'hello world';
});

地址栏上可以这样去访问  http://www.itbool.com/Home/index

/*
用post方式去请求Home/index这个地址的时候,用匿名函数响应
*/

Route::post('Home/index',function(){
    return 'hello world';
});
这样如果在地址栏上去访问的话,会报错,因为我们使用post方式去提交,所以当我们去提交form                                     
表单的时候,我们定义的这条路由才起作用
多请求路由

比如我们在注册或者登陆页面的时候呢,我们需要用Get方式去获取页面,然后用POST方式去提交,但是它响应的是一条路由,只不过方式不同

遇到这样的情况,怎么办呢?难道去定义两条路由,这样是不是增加了代码量呢?
我们可以这样解决

格式如下

/*
match方法是laravel自己封装好的,同样它的意思是匹配
*/
Route::match(['get,post],'admin/login',function(){
    return 'login';
});

/*
在这里呢我们可以用match这个方法去匹配两种请求方式,这样是不是减少了代码量呢
*/

我们还有第二种方法,
/*
GET,POST,PUT,DELETE.. 任何方法访问 www.itbool.com/Admin/login, 都用第2个参数中的匿名函数去响应 .
*/
Route::any('Admin/login',function(){
    return 'hello world';
});
路由传参

以上呢就是在laravel中路由用法,用匿名函数去相应,但是怎么去传参呢,下面呢我们去分析:

/*
路由传递参数,
*/

Route::get('user/{id}',function($id){
    return 'user_'.$id;
});

地址栏上访问  http://www.itbool.com/user/定义的数值

laravel的路由不仅可以这样传递参数,还可以的传递可选参数

如下

Route::get('user/{name}',function($name = null){
    return 'user_'.$name;
});

如果我们去访问,http://www.itbool.com/user  会返回 user_

如果我们去访问,http://www.itbool.com/user/定义的名字 会返回user_+定义的名字
路由限制

在tp框架中,假如我们想要去验证一些字段,那我们必须要去用tp的自动验证,但是在laravel中是不用的,我们直接可以在路由中做限制

普通形式
->where('要限制的参数名','限制规则(正则,不用斜线//)');
数组形式
->where(['要限制的参数名1'=>'限制规则1(正则,不用斜线//)','要限制的参数名2'=>'限制规则2(正则,不用斜线//)']);

Route::get('user/name',function($name){
    return 'user_'.$name;
})->where('name','[A-Za-z]+');

只需要在路由后加where 两个参数, 第一个是验证的字段,第二个是你验证的规则

传递多个参数的定义
Route::get('user/{name}/{id}',function($name,$id){
    return 'user_'.$name.$id;
})->where(['name'=>'[A-Za-z]+','id'=>'[0-9]+']);
控制器与路由

因为我们在做一些项目的时候呢,功能区域呢是依靠我们的控制器中的方法去相应,那么在laravel中路由与控制器怎么使用呢?那么我们下面一起看一下

我希望通过http://www.itbool.com/访问Home模块下IndexController类的index方法,应该这样定义一条路由:

Route::get('Home/index','Home\Indexcontroller@index');

例子很简单,但是会遇到这样的问题

这些呢就是laravel定义路由的简单使用,那么我们在回到上述中的TP的路由规范,两者对比,
在laravel中的定义,我们可以看出虽然laravel没有强加给你既定的路由规则,但你拥有了更多定制的权利,并且laravel定义路由的方式非常优雅,带给你的体验非常丰富。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值