Laravel 路由,有多种可能性的 slug

Laravel routing, slug with multiple possibilities

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

一个URL我正在尝试制作。将是

/location/province-name/city/category

省名只有几个选项。有没有办法设置它以便像这样的东西可以工作?

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

这有意义吗?

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

以上方法比以前的方法更灵活

您可以将验证添加为,

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);
});

你可以做的是使用 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
});