Laravel框架初学一路由(路由参数)

必要参数

有时需要在路由中捕获到URI的一些参数。比如,需要捕获URI中的用户id,可以这样来定义路由

Route::get("user/{id}", function ($id) {
    return "User ".$id;
});

也可以同时定义多个路由参数

Route::get("posts/{post}/comments/{comment}", function ($postId, $commentId) {
    //
});

可以看到,路由中的参数都会被{}来包裹。并且不能包含-字符,如果需要可以用下划线_来代替。

可选参数

可选参数与必要参数的形式不同在于,可选参数会在参数名的后面追加一个?字符,如:

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

Route::get("user/{name?}", function ($name = "John") {
    return $name;
});
正则表达式约束

可以用where对路由参数进行格式上的约束,where方法需要两个参数:路由参数和用来约束此参数的正则表达式

Route::get("user/{name}", function ($name) {
    //
})->where("name", "[A-Za-z]");

Route::get("user/{id}", function ($id) {
    //
})->where("id", "[0-9]+");

Route::get("user/{id}/{name}", function ($id, $name) {
    //
})->where(["id" => "[0-9]+", "name" => "[a-z]+"]);
全局约束

如果希望某个参数一直被给定的正则来约束,除了每个路由都添加上正则表达式,还有一个一劳永逸的方法。
通过在RouteServiceProvider里使用pattern方法来实现
1343147-20180720103430543-2104418041.png
一旦使用此方式,那么所有包含这些参数的路由都会自动的应用到这种约束,在定义路由的时候就不需要where方法了

Route::get("user/{id}", function ($id) {
    // 只有当{id}为数字时才会被执行
});

转载于:https://www.cnblogs.com/feanmy/p/laravel-route-params.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值