📜  url中间的laravel可选路由参数 - PHP(1)

📅  最后修改于: 2023-12-03 15:20:54.957000             🧑  作者: Mango

可选路由参数

在Laravel中,可选路由参数允许你定义一个路由模式,其中某些部分是可选的。这在一些需要动态路由的场景中非常有用,例如搜索或过滤。

定义可选路由参数

通过使用花括号 {} 包裹可选的路由参数,你可以定义可选路由参数。像这样:

Route::get('/search/{type}/{keyword?}', function($type, $keyword = null) {
    if($keyword) {
        return "Searching for $type with keyword $keyword";
    } else {
        return "Displaying all $type";
    }
});

这样,如果请求的URL只包含路由的前半部分,即 /search/{type} ,则控制器(或闭包)将返回所有类型为 $type 的项目。如果URL还包括一个关键字参数,例如 /search/book/Laravel,则返回所有类型为 book 并且包含关键字 Laravel 的项目。

注意事项
  • 可选路由参数必须放置在必选路由参数之后。
  • 如果可选参数没有被提供,则其默认值为 null
  • 对于可选参数的路由定义,只能由 Closure 或者 Controller 处理器来处理,而不能通过 Route::model()Route::bind() 方法进行绑定。

上面的例子中,开发者可以在路由 /search/book/webservice 查找所有类型为 book 并且含有关键字 webservice 的项目,但是如果路由 /search/book,不传递关键字参数,则返回所有类型为 book 的项目。

结论

通过使用可选路由参数,我们可以实现在URL中定义有条件的、有选项的路由。这是Laravel框架非常强大、灵活的路由系统的一个极好的补充,肯定会使我们的Web应用程序的设计更加简单和易用。

代码片段
Route::get('/search/{type}/{keyword?}', function($type, $keyword = null) {
    if($keyword) {
        return "Searching for $type with keyword $keyword";
    } else {
        return "Displaying all $type";
    }
});