Php Laravel 5.5将控制器传递给路由组
我不知道这是否可能。假设我们有3个路由组来创建前缀…都来自根;因此,类似下面的内容可能会有问题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'
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');
});