Laravel 学习路线【2】路由

本文详细介绍了路由的概念及其实现方法,包括基本路由、多请求路由、路由参数、命名路由、路由群组以及如何在路由中输出视图等内容。

路由

(1)路由简介

  • 简单的说就是将用户的请求转发给相应的程序进行处理
  • 作用就是建立url 和程序之间的映射(这里的程序一般指的是处理函数)
  • 请求类型get、post、put、patch、delete

(2)基本路由

//get请求
Route::get('example1',function(){
    return 'Hello World';
});

这个例子会在使用get请求时返回 Hello World 。

//post请求
Route::post('example2',function(){
    return 'example2';
});

这个例子会在使用post请求时返回 example2 。
(3)多请求路由

Route::match(['get','post'],'multy1',function(){
    return 'multy1';
})

后面数组里面放的是请求方式,可以是多种请求,访问multy1 都会返回multy1 。

Route::any('multy2',function(){
    return 'mylty2';
});

any 相应各种请求方式,所有请求方式请求multy2 都会返回 。

(4)路由参数

//路由参数
Route::get('user/{id}',function($id){
    return 'user'.$id;
});

 有时候可能需要指定可选的路由参数,这可以通过在参数后面加一个 ? 来实现,这种情况需要给相应的变量指定一个默认值

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

Route::get('user/{name?}',function($name = 'sean'){
    return 'user'.$name;
});
//加上正则约束
Route::get('user/{name?}',function($name = 'sean'){
    return 'user'.$name;
})->where('name','[A-Za-z]+');
//id只能是数字,name只能是字母,不符合负责就报错
Route::get('user/{id}/{name?}',function($name = 'sean'){
    return 'user'.$name;
})->where(['id' => '[0-9]+','name' => '[A-Za-z]+']);

也可以设置一个全局约束:
如果想要路由参数在全局范围内被给定正则约束,可以使用 pattern 方法,在 RouteServiceProvider 类的 boot 方法中定义约束模式;

public function boot()
{
    Route::pattern('id','[0-9]+');
    pattern::boot();
}

一旦模式被定义,将自动应用到所有包含该参数的路由中

    Route::get('user/{id}',function($id){
        //只有{id}是数字才会调用
    });

(5)命名路由
别名的好处:可以在控制器或者路由不管在哪里,都可以使用router函数来生成别名对应的url


Route::get('center',function(){
    //
})->name('center');
//还可以为控制器动作指定路由名称
Route::get('user/profile','userController@showprofile')->name('profile');

为命令路由生成URL
为给定路由分配名称之后,就可以通过辅助函数route为该命名生成URL

$url = route('profile');
return redirect->route('profile');

如果命名路由定义了参数,可以传该参数作为第二个参数传递给route函数,给定的路由参数将会自动插入到URL中

Rouute::get('user/{id}/profile',function($id){
    //
})->name('profile');
$url = route('profile',['id' => 1]);

(6)路由群组

//路由群组
Route::group(['prefix' => 'member'],function(){
    //访问的当前群组下的center,和multy2
    //请求路径为member/center ,member/multy2
    //请求路径为center , multy2 时,请求的只是一个简单路由
    Route::get('center',function(){
        return 'center';
    }); 

    Route::get('multy2',function(){
        return 'member-multy2';
    });
});

(7)路由中输出视图

//输出视图使用view 函数 输出hello视图
Route::get('view',function(){
    return view('hello');
});

这篇一直在更新~~~。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值