美文网首页
58. 路由 路由参数

58. 路由 路由参数

作者: 独步天堂 | 来源:发表于2017-10-06 16:21 被阅读6次
  • 有时需要在路由中捕获一些 URL 片段。例如,从 URL 中捕获用户的 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]+']);
  • 如果你希望某个具体的路由参数都遵循同一个正则表达式的约束,就使用 pattern 方法在 RouteServiceProvider 的 boot 方法中定义这些模式:
/**
 * 定义你的路由模型绑定, pattern 过滤器等。
 *
 * @return void
 */
public function boot()
{
    Route::pattern('id', '[0-9]+');

    parent::boot();
}

定义好之后,便会自动应用到所有使用该参数名称的路由上:

Route::get('user/{id}', function ($id) {
    // 仅在 {id} 为数字时执行...
});

相关文章

  • 58. 路由 路由参数

    有时需要在路由中捕获一些 URL 片段。例如,从 URL 中捕获用户的 ID,可以通过定义路由参数来执行此操作: ...

  • angular 路由传参

    路由必填参数 路由可选参数 路由查询参数

  • react-router-dom部分笔记

    1,向路由组建传递参数 (1)params 参数 路由链接(携带参数): 注册路由(声明接收) 接收参数this....

  • laravel路由

    2 路由格式 3 路由参数 4 .路由别名 5 .路由群组

  • 向路由组件传递参数2种方法

    方式1:路由路径携带参数(param/query) 配置路由 路由路径 路由组件中读取请求参数 this.$rou...

  • laravel路由

    Laravel 常见路由 路由参数

  • thinkphp5学习笔记(三)路由配置

    URL请求的执行流程 路由模式 路由注册 路由规则 路由地址 路由参数 变量规则 路由分组 别名路由 路由绑定

  • Laravel 学习笔记

    路由 文件位置: app/Http/routes.php 基础路由get/post 多请求路由 路由参数 路由别名...

  • 路由跳转(可能的面试题)

    路由如何取参数? 如何跳转路由?

  • vue 动态路由

    什么是动态路由?带参数的路由就是动态路由 实际使用 路由中使用多段路径作为参数 !!! 路由组件复用 提醒一下,当...

网友评论

      本文标题:58. 路由 路由参数

      本文链接:https://www.haomeiwen.com/subject/qvcryxtx.html