【问题标题】:Laravel routing, slug with multiple possibilitiesLaravel 路由,具有多种可能性的 slug
【发布时间】:2019-06-19 02:12:23
【问题描述】:

已经搜索了一段时间,但找不到关于这是否可能的答案。

我正在尝试创建一个 URL。会是

/location/province-name/city/category

省份名称只有几个选项。有没有办法设置它,这样这样的东西会起作用?

/{bc or ab or mn or etc}/{cityname}/{category}

这有意义吗?

【问题讨论】:

  • 你试过什么?老实说,这个问题可以在几秒钟内自己回答。
  • 显然这没有意义。我想这样做,而 /locations 不知道是否有办法在 slug 中有一个 OR 语句。但仍然让它们作为 var 返回,例如 {BC or AB, or MN as VAR} 这不起作用。

标签: laravel routing slug


【解决方案1】:

你可以做的是使用pattern

routes/web.php

Route::pattern('province', '(bc|ab|mn|etc)');

Route::get('/location/{province}/{city}/{category}', function ($province, $city, $category) {
    // TODO do something with your route
});

【讨论】:

  • 正是我需要的!谢谢!我认为这是可能的。 (laravel 新手)
【解决方案2】:
/{bc or ab or mn or etc}/{cityname}/{category}

上述方法比前一种方法更灵活

【讨论】:

    【解决方案3】:

    您可以将验证添加为,

    Route::get('/location/{province}/{city}/{category}', function ($province, $city, $category) {
    
        // show 'Page Not Found' if $province in not in the available options
        if(!in_array($province, ['bc', 'ab','mn'])) {
            abort(404);
        }
    
        dd($province, $city, $category);
    });
    

    【讨论】:

    • 这是一种限制$province 选项的方法。即使您可以在定义路由时通过模式过滤它,我建议的方法也会动态工作。
    猜你喜欢
    • 2018-04-22
    • 2019-07-02
    • 1970-01-01
    • 2014-05-04
    • 2018-12-21
    • 2018-12-12
    • 1970-01-01
    • 2012-10-31
    • 2017-09-09
    相关资源
    最近更新 更多