码迷,mamicode.com
首页 > 其他好文 > 详细

laravel5.1基础路由的使用

时间:2016-12-17 20:17:23      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:项目   正则   mat   create   数值   类型   article   分析   art   

路由的理解

我们所了解的很多框架通常都有自己有路由的定义规则,个人觉得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中路由用法,用匿名函数去相应,但是怎么去传参呢,下面呢我们去分析:
```php

/*
路由传递参数,
*/

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定义路由的方式非常优雅,带给你的体验非常丰富。

laravel5.1基础路由的使用

标签:项目   正则   mat   create   数值   类型   article   分析   art   

原文地址:http://www.cnblogs.com/booljiaoyu/p/6192820.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!