Laravel 5.1 通配符路由

Posted

技术标签:

【中文标题】Laravel 5.1 通配符路由【英文标题】:Laravel 5.1 Wildcard Route 【发布时间】:2015-10-12 17:22:11 【问题描述】:

我正在创建一个允许用户定义类别的 CMS。类别下可以有其他类别或页面。如何在 Laravel 中创建一个支持无限数量 URI 段的路由?

我已经尝试了以下......

Route::get('/resources/section', ['as' => 'show', 'uses' => 'MasterController@show']);

我也尝试将路线设为可选...

Route::get('/resources/section?', ['as' => 'show', 'uses' => 'MasterController@show']);

请记住,部分可以是多个部分或一个页面。

【问题讨论】:

【参考方案1】:

首先,您需要提供一个正则表达式来匹配参数值。 Laravel 路由器将 / 视为参数分隔符,您必须更改该行为。你可以这样做:

Route::get('/resources/section', 
  [
    'as' => 'show', 
    'uses' => 'MasterController@show'
  ])
  ->where(['section' => '.*']);

这样,任何出现在 /resources/ 之后并与正则表达式匹配的内容都将传递给控制器​​中的 $section 变量。

【讨论】:

以上是关于Laravel 5.1 通配符路由的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5:API 路由 + 通配符路由导致意外行为

Laravel,路由通配符过滤然后控制器

Laravel 4 通配符路由到不同的控制器

Laravel 5.6 通配符路由在域中未按预期运行

在 laravel 5 中通配符到错误控制器的路由

Laravel 3.x 路由问题 - 使用通配符获取错误的参数值