Laravel路由模式 - 包含多个项目的URL


Laravel routing pattern - url having multiple items

我的URL是这样的:http://localhost/sample/public/category/Electronics/Computers 和平板电脑/平板电脑/iPad

这是电子产品,计算机和平板电脑的列表,平板电脑等是类别和子类别。可能有 N 个类别...

是否可以编写与 N 个类别匹配的模式,而不是将它们单独称为 {cat1?/{cat2?}/{cat3?}就像在下面的代码中完成的那样?

Route::group(['prefix' => 'category'], function () {
        Route::get('/','CategoryController@show');
        Route::get('/{cat1?}/{cat2?}/{cat3?}', 'CategoryController@show');        
    }); 

任何帮助,不胜感激。

您可以使用一个参数作为正则表达式模式制作 Route。像category/{params}这样的东西,{params}就像(/.+)+.然后在控制器操作中,您可以通过解析此参数来获取类别列表。 $categoriesArray = split('/', trim($params, '/'));

试试这个:

Route::get('/{cat1}/{cat2}/{cat3}', 'CategoryController@show')->where(['cat1' => '^(Electronics|Computers)', 'cat2' => '^(iPad)']);

看看,这是否有帮助。