Laravel路由模式 - 具有多个项目的URL

时间:2016-02-23 08:51:56

标签: php laravel-routing

我的网址是这样的: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');        
    }); 

感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

试试这个:

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

看看,如果有帮助。