13

在 Laravel 4 中定义路由时,是否可以在同一路由中定义多个 URI 路径?

目前我做以下事情:

Route::get('/', 'DashboardController@index');
Route::get('/dashboard', array('as' => 'dashboard', 'uses' => 'v1\DashboardController@index'));

但这违背了我的目的,我想做类似的事情

Route::get('/, /dashboard', array('as' => 'dashboard', 'uses' => 'DashboardController@index'));
4

3 回答 3

24

我相信您需要使用带有正则表达式的可选参数:

Route::get('/{name}', array(
     'as' => 'dashboard', 
     'uses' => 'DashboardController@index')
    )->where('name', '(dashboard)?');

*假设您想路由到同一个控制器,这从问题中并不完全清楚。

*当前接受的答案匹配所有内容,而不仅仅是/OR /dashboard

于 2014-02-23T16:14:40.797 回答
16

出于好奇,我发现尝试解决@Alex作为@graemec 的答案下的评论发布的这个问题很有趣,以发布一个有效的解决方案:

Route::get('/{name}', [
    'as' => 'dashboard', 
    'uses' => 'DashboardController@index'
  ]
)->where('name', 'home|dashboard|'); //add as many as possible separated by |

因为第二个参数where()需要正则表达式,所以我们可以将它指定为完全匹配任何分隔的参数,|所以我最初提出whereIn()进入 Laravel 路由的想法被这个解决方案解决了。

PS:本示例在 Laravel 5.4.30 上测试

希望有人觉得它有用

于 2017-08-09T10:41:09.080 回答
4

如果我理解你的问题,我会说:

使用路由前缀:http : //laravel.com/docs/routing#route-prefixing

(可选)路由参数: http: //laravel.com/docs/routing#route-parameters

例如:

Route::group(array('prefix' => '/'), function() { Route::get('dashboard', 'DashboardController@index'); });

或者

Route::get('/{dashboard?}', array('as' => 'dashboard', 'uses' => 'DashboardController@index'));
于 2013-07-06T14:56:06.033 回答