【问题标题】:Laravel URL with optional parameter at the beginningLaravel URL 开头带有可选参数
【发布时间】:2021-09-09 09:16:29
【问题描述】:

我正在尝试获取一个带有路由绑定的 URL,作为 routes/web.php 中的一个语句,匹配以下模式:

  • /abc/my-slug
  • /de/abc/my-slug
  • /es/abc/my-slug

值得注意的是,第一个参数是可选的,应该默认为“en”。是否可以使用路由绑定从两个参数加载模型,使用一个语句而不是路由文件中的两个语句?

【问题讨论】:

    标签: laravel routes


    【解决方案1】:

    可能是这样的东西(未经测试)?

     Route::name('page')
          ->get('/{lang?}/{slug}', [Controller::class, 'index'])
          ->setDefaults(['lang' => 'en']);
    

    或者作为替代read this 了解如何在中间件中设置默认值

    【讨论】:

    • 我已经尝试过了,如果我在控制器方法中将可选参数设置为默认值,它会导致“缺少参数”,因为默认值似乎没有设置或Required parameter $url_segment follows optional parameter $language
    • 如果你也将 slug 设置为可选?
    • 它也会匹配其他路由。我选择了多条路线,因为我无法想象没有它。
    猜你喜欢
    • 2018-05-07
    • 1970-01-01
    • 2022-01-06
    • 2018-04-22
    • 2014-06-03
    • 2019-03-11
    • 2017-04-27
    • 2018-04-06
    • 2014-08-27
    相关资源
    最近更新 更多