我想在每个页面上展示一些内容,例如$gameAccounts = Auth::user()->gameAccounts()->get();
在每个页面上全局呈现此变量的最佳方法是什么?
答案 0 :(得分:1)
如果您只需要视图,则可以在AppServiceProvider
public function boot()
{
View::composer('layouts.base', function ($view) {
$view->with('gameAccounts', Auth::user()->gameAccounts);
});
}
如果您需要全局,则可以将其存储在AppServiceProvider
中的配置中。
答案 1 :(得分:0)
对于共享功能,我建议写一个trait。该特征可以在整个控制器中使用,并为所有人提供相同的功能。
示例:强>
trait GameSettingsTrait
{
public function getUserGameAccounts()
{
return Auth::user()->gameAccounts()->get();
}
}
在您的控制器中执行:
class IndexController extends Controller
{
use GameSettingsTrait;
...
另一种方法是将逻辑放在app/Http/Controllers/Controller.php
的基本控制器中。顺便说一下,你可以看到它已经将特性用于其他功能。
答案 2 :(得分:0)
答案 3 :(得分:0)
使用视图编辑器是执行此操作的最佳方式。 只需将此行添加到引导方法内的AppServiceProvider.php中:
public function boot()
{
//
view()->composer('*', function ($view) {
$view->with('user', Auth::user()->gameAccounts()->get());
});
}