什么是路由:将用户的请求按照事先规划的方案提交给指定的控制器或者功能函数来进行处理.

在ThinkPHP框架中,当我们在URL地址中,传递m、c、a三个参数时,系统会自动跳转到指定模型中指定控制器的指定方法,这些处理过程都是由框架自动完成的。但是,在Laravel框架中,其并没有指定固定参数,其路由必须要手工进行配置。把用户需要访问的全部路由都事先设置好,用户只能访问声明的一些路由,即没有声明的路由是不能被访问的,进而可以对网站的安全有一定的保护作用。

1、路由配置文件

路由文件的位置:项目目录/routes/web.php文件。

2、routes\web.php配置文件中配置路由

(1)路由定义格式:

Route::请求方式(‘url’,闭包函数);

Route::请求方式(‘url’,’控制器名称@操作方法’);

比如我们请求域名下根目录

Route::get('/',function(){return 'hello Laravel'})

函数的返回值,就是请求的响应。

比如我们请求:域名/home

Route::get('home',function(){return 'hello home'})

注意点:如果访问一个没有定义的路由,则会报如下错误提示;

Laravel入门使用(路由)_java

 

(2)请求方式有哪些?

Laravel入门使用(路由)_laravel_02

 

注意:match和any方法请求

match([请求方式1,请求方式2],url,闭包函数) 匹配多个请求方式

Laravel入门使用(路由)_java_03

 

any(url,闭包函数)   匹配任意请求方式

match需要设置请求方法数组、URL地址、请求处理参数三个参数,第一个参数要以数组的方式设置允许的请求方法。

any方法对应所有HTTP请求。

Laravel入门使用(路由)_laravel_04

 

(3)默认根路由

问题:为什么当我们在浏览器中访问虚拟域名​​http://域名时,如何显示Laravel5​​?

答:主要是受到web.php路由的影响,当我们访问​​http://域名,系统会自动跳转到web.php​​路由,然后查看是否有定位到根目录下的get请求,找到如下代码:

然后载入welcome.blade.php视图文件。

注意:在laravel里面,view()函数是加载视图文件的,视图文件的后缀是.blade.php的。

Laravel入门使用(路由)_php_05

 

3、路由参数

路由参数主要针对的是GET请求的情况,

语法格式如下:

Route::get('URL/{参数名称}','闭包函数或控制器响应方法标识')->where('参数名称','正则表达式')

where('参数名称','正则表达式')用来对输入的参数进行限制,只有符合正则表达式要求的参数才可以传递。

案例1:基本用法,必选参数

Laravel入门使用(路由)_laravel_06

 

案例2:可以设置参数的默认值(可选参数)。

语法:

Route::get('URL/{参数名称?}','闭包函数或控制器响应方法标识')->where('参数名称','正则表达式')

没有参数时,就使用默认值

Laravel入门使用(路由)_java_07

 

添加参数时:

Laravel入门使用(路由)_正则表达式_08

 

此时参数是可选的,当参数存在时,函数参数会正常接收,如果不存在,则会用默认值。

案例3,正则约束

对路由参数进行验证限制,比如只能是数字。

语法:

Route::get('URL/{参数名称}','闭包函数或控制器响应方法标识')->where('参数名称','正则表达式')

不匹配时,出现如下错误,如下错误表示,路由请求失败。

Laravel入门使用(路由)_正则_09

 

正常匹配时,

Laravel入门使用(路由)_laravel_10

 

案例4:正则约束多个路由参数案例

->where(['name'=>'[a-zA-Z]','id'=>'\d+'])

路由参数可以是多个的,where后面的正则约束要使用数组的方式。

不匹配时出现如下错误;

Laravel入门使用(路由)_laravel_11

 

匹配时正常输出

Laravel入门使用(路由)_java_12

 

4、路由前缀

比如后台有如下管理员登录,增删改查操作的路由

Route::get('admin/login','');
Route::get('admin/logout','');
Route::get('admin/index','');
Route::get('admin/user/add','');
Route::get('admin/user/del','');
Route::get('admin/user/edit','');
.....

他们的共同点是,都有/admin/前缀,为了管理方便,可以把他们放到一个路由分组中。

使用prefix属性指定路由前缀,

比如,你想要为所有路由URIs前面添加前缀admin

Route::group(['prefix' => 'admin'], function () {
Route::get('users', function () {
// 匹配 "/admin/users" URL
});
});

Laravel入门使用(路由)_正则表达式_13