1、默认根路由

提问: 为什么我们浏览器在访问虚拟域名时,会显示Laravel?

回答:原因是在路由文件web.php中,其实已经定义好了一个路由,这个路由为根路由,一般用于访问网站的首页

2、路由定义格式

Route::请求方式(’请求的URL‘,匿名函数或控制器响应的方法)

eggs: 请求域名下根目录 Route::get('/' , function(){return 'hello world'}),函数的返回值就是请求的响应结果

Route::get('/', function () {
    return 'Hello World!!!'
});

3、请求方式有哪些?

我们可以注册路由来响应任何HTTP请求

tips: 最主要的就是前面两个
Route::get($uri,$callback);  
Route::post($uri,$callback);  
Route::put($uri,$callback);
Route::patch($uri,$callback);
Route::delete($uri,$callback);
Route::options($uri,$callback);

问题:要解决“<form action=method='post'>”这样的问题?如何解决?

实现:需要注册路由响应多个请求HTTP请求 --> match方法实现或者any方法来实现

1、get方法:表示匹配请求类型为get的请求

2、post方法:表示匹配请求类型为post的请求

Route::post('/', function () {
    return 'Hello World!!!'
});


3、match方法:表示匹配用户指定的几个请求类型(通过第一个参数去指定)的请求

Route::match('['get','post']','/', function () {
    return 'Hello World!!!'
});

4、any方法:表示匹配路由支持全部的请求类型

Route::any('foo', function () {
    return 'Hello World!!!'
});

4、路由参数

路由参数就是给路由传递参数(分为必选参数和可选参数)

1、必选参数:在路由中一但定义了,就必须传递参数,如果不传参数就会报错

Routr::any('home1/{id}', function($id){
  return "您当前访问的是/home1地址,您传入的id值是$id"
})

2、可选参数:在路由中定义了,并且要设置默认值,传递参数则替代默认值,没有传递则使用默认值

Routr::any('home1/{id?}', function($id){
  return "您当前访问的是/home1地址,您传入的id值是$id"
})

5、路由别名

当路由名称太长时,可以给路起一个别名,方便后续去简洁调用

Routr::any('home1/vytrrtb5vcucfytbvrctrcrt/{id?}', function($id){
  return "您当前访问的是/home1地址,您传入的id值是$id"
}) ->name('fireworks)

6、路由群组(群组)

问题:有下列多个路由

/admin/login

/admin/logout

/admin/index

/admin/user/add

/admin/user/del

共同点:都有/admin/前缀,为了管理方便,可以把他们放到一个路由分组中,这个分组称之为路由群组

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

Route::group(公共属性数组,回调函数);     回调函数中放的剔除公共属性之后的路由

Route::group(['prefix' => 'admin'],function(){
  Route::get(login,function(){
    //匹配  "/admin/login"  URL
  })
  Route::get(logout,function(){
    //匹配  "/admin/logout"  URL
  })
  Route::get(user/add,function(){
    //匹配  "/admin/user/add"  URL
  })
})