laravel5.1基础路由的使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel5.1基础路由的使用相关的知识,希望对你有一定的参考价值。

路由的理解


我们所了解的很多框架通常都有自己有路由的定义规则,个人觉得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\[email protected]‘);

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



这些呢就是laravel定义路由的简单使用,那么我们在回到上述中的TP的路由规范,两者对比,

在laravel中的定义,我们可以看出虽然laravel没有强加给你既定的路由规则,但你拥有了更多定制的权利,并且laravel定义路由的方式非常优雅,带给你的体验非常丰富。


本文出自 “布尔教育” 博客,请务必保留此出处http://zixueit.blog.51cto.com/12347715/1883622

以上是关于laravel5.1基础路由的使用的主要内容,如果未能解决你的问题,请参考以下文章

Laravel5.1 路由 -路由分组

Laravel5.1 路由

集中式路由

VSCode自定义代码片段11——vue路由的配置

VSCode自定义代码片段11——vue路由的配置

VSCode自定义代码片段11——vue路由的配置