有没有办法在Laravel的单个路由组中添加多个前缀?
Route::group(['prefix' => 'prefix'], function (){
Route::get('hello', 'HelloController@sayHello');
});
我尝试使用竖管添加 -
Route::group(['prefix' => 'prefix1|prefix2'], function (){
Route::get('hello', 'HelloController@sayHello');
});
还尝试使用array-
Route::group(['prefix' => ['prefix1', 'prefix2']], function (){
Route::get('hello', 'HelloController@sayHello');
});
但没有运气。有没有办法做到这一点?
答案 0 :(得分:2)
您是否尝试过where
这样的方法调用:
Route::group(['prefix' => '{prefix}'], function (){
Route::get('hello', 'HelloController@sayHello')->where('prefix', 'prefix1|prefix2');
});
<强>更新强>
如果你想以更有效的方式做到这一点,你可以尝试例如:
Route::group(['prefix' => '{prefix}'], function (){
$routes = [];
$routes[] = Route::get('hello', 'HelloController@sayHello');
$routes[] = Route::get('other', 'HelloController@other');
foreach($routes as $route) {
$route->where('prefix', 'prefix1|prefix2');
}
});
但这只是我的第一个想法。也许你可以找到另一个更好的。
答案 1 :(得分:1)
让我再添加一个例子,仅用于处理偶然情况:
// The Route Name point to multiple prefixes
// according to locale using the same Controller
$contactRoutes = function () {
Route::get('', ['uses' => 'ContactController@index', 'as' => 'contact');
Route::post('', ['uses' => 'ContactController@send', 'as' => 'contact.send');
};
switch (env('APP_LOCALE')) {
case 'pt':
Route::group(['prefix' => 'contato'], $contactRoutes);
break;
case 'es':
Route::group(['prefix' => 'contacto'], $contactRoutes);
break;
default: //en
Route::group(['prefix' => 'contact'], $contactRoutes);
break;
}