【发布时间】:2017-09-07 10:33:01
【问题描述】:
我不知道这是否可能。假设我们有 3 个路由组来创建前缀……全部来自根目录;因此,类似以下的内容可能会出现问题。
Route::group([
'prefix' => '{something}',
'middleware' => ['web', 'auth']
], function() {
});
所以,有 n 个路由组。每个组都有相同的路由模式集。唯一的区别是用于每个组的控制器。
<?php
Route::group([
'prefix' => 'prefix1',
'middleware' => ['web', 'auth']
], function() {
$controller = '\Path\To\Controller';
Route::get('/', $controller.'@index');
Route::get('/{object}', $controller.'@handleObject');
});
Route::group([
'prefix' => 'prefix2',
'middleware' => ['web', 'auth']
], function() {
$controller = '\Path\To\Controller2';
Route::get('/', $controller.'@index');
Route::get('/{object}', $controller.'@handleObject');
});
Route::group([
'prefix' => 'prefix3',
'middleware' => ['web', 'auth']
], function() {
$controller = '\Path\To\Controller3';
Route::get('/', $controller.'@index');
Route::get('/{object}', $controller.'@handleObject');
});
我正在寻找的是可以让我从路由组转到其他东西,将控制器传递给它的东西。
这可能吗?有没有我想念的替代方案?
基本上,路由组由多个子组和路由组成,并且真的,真的不想为了更改控制器而复制和粘贴路由。
更新
几乎希望能够做到这样的事情,但我很确定这是做不到的。
Route::group([
'prefix' => ['prefix1', 'prefix2', 'prefix3'],
'middleware' => ['web', 'auth']
], function() {
$controller = null;
if ($prefix == '...') {
$controller = '\Path\To\Controller3';
} else if ($prefix '...') {
...
}
Route::get('/', $controller.'@index');
Route::get('/{object}', $controller.'@handleObject');
});
【问题讨论】:
标签: php laravel-routing laravel-5.4