Php Laravel 5.5将控制器传递给路由组

Php Laravel 5.5将控制器传递给路由组,php,laravel-routing,laravel-5.4,Php,Laravel Routing,Laravel 5.4,我不知道这是否可能。假设我们有3个路由组来创建前缀…都来自根;因此,类似下面的内容可能会有问题 Route::group([ 'prefix' => '{something}', 'middleware' => ['web', 'auth'] ], function() { }); 因此,有n个路由组。每个组都有相同的路线模式集。唯一的区别是用于每个组的控制器 <?php Route::group([ 'prefix'

我不知道这是否可能。假设我们有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');
});
是的,有可能

您只需要一个数组和逻辑。对于下面的示例,我使用我开发的服务提供商中的配置文件。然后,只要在阵列上循环,Laravel的路由器每次都会这样做

///config/service-config.php
$前缀=[
"瓷砖",,
“文件”,
“风筝”,
“福斯”
];
//web.php
$controller='\Path\To\controller';
如果(!为null(config('service-config.prefixes')){
foreach(config('service-config.prefixes')作为$prefix){
路由::组([
“prefix”=>$prefix
],function()使用($controller){
路由::post(“/”,$controller.“@addEmailAddress”);
});
路由::组([
'前缀'=>$prefix./{foo}/bar'
],function()使用($controller){
// ...
});
}    
}
结果:

/tiles
/瓷砖/{foo}/bar
/档案
/文件/{foo}/bar
/风筝
/风筝/{foo}/酒吧
/福斯
/foos/{foo}/bar
每个控制器在该控制器中使用相同的控制器和方法。

是的,这是可能的

您只需要一个数组和逻辑。对于下面的示例,我使用我开发的服务提供商中的配置文件。然后,只要在阵列上循环,Laravel的路由器每次都会这样做

///config/service-config.php
$前缀=[
"瓷砖",,
“文件”,
“风筝”,
“福斯”
];
//web.php
$controller='\Path\To\controller';
如果(!为null(config('service-config.prefixes')){
foreach(config('service-config.prefixes')作为$prefix){
路由::组([
“prefix”=>$prefix
],function()使用($controller){
路由::post(“/”,$controller.“@addEmailAddress”);
});
路由::组([
'前缀'=>$prefix./{foo}/bar'
],function()使用($controller){
// ...
});
}    
}
结果:

/tiles
/瓷砖/{foo}/bar
/档案
/文件/{foo}/bar
/风筝
/风筝/{foo}/酒吧
/福斯
/foos/{foo}/bar
每个控制器在该控制器中使用相同的控制器和方法

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');
});