在Laravel中,可以使用中间件来实现不同控制器之间共享的公共变量。下面是一个解决方案的示例代码:
首先,创建一个自定义的中间件类,比如SharedDataMiddleware
:
'My Laravel App',
'appName' => config('app.name'),
];
// 在请求中共享变量
$request->attributes->add(['sharedData' => $sharedData]);
return $next($request);
}
}
然后,在app/Http/Kernel.php
文件的$middlewareGroups
属性中,将自定义中间件类添加到web
中间件组:
protected $middlewareGroups = [
'web' => [
// ...
\App\Http\Middleware\SharedDataMiddleware::class,
],
// ...
];
现在,你可以在任何控制器中访问共享的变量。例如,在一个控制器的方法中:
input('sharedData');
// 访问公共变量
$siteName = $sharedData['siteName'];
$appName = $sharedData['appName'];
// ...
}
}
通过这种方式,你可以在多个控制器中共享相同的变量,而不需要在每个控制器中手动传递它们。