Php 用于基础布局的Laravel全局变量
我想在每一页上都展示一些东西,比如Php 用于基础布局的Laravel全局变量,php,laravel,model-view-controller,controller,laravel-5.2,Php,Laravel,Model View Controller,Controller,Laravel 5.2,我想在每一页上都展示一些东西,比如$gameAccounts=Auth::user()->gameAccounts()->get() 在每页上全局显示此变量的最佳方法是什么?对于共享功能,我建议编写一个。该特性可以在整个控制器中使用,并为所有控制器提供相同的功能 示例: trait GameSettingsTrait { public function getUserGameAccounts() { return Auth::user()->gameAcc
$gameAccounts=Auth::user()->gameAccounts()->get()代码>
在每页上全局显示此变量的最佳方法是什么?对于共享功能,我建议编写一个。该特性可以在整个控制器中使用,并为所有控制器提供相同的功能
示例:
trait GameSettingsTrait
{
public function getUserGameAccounts()
{
return Auth::user()->gameAccounts()->get();
}
}
在控制器中,执行以下操作:
class IndexController extends Controller
{
use GameSettingsTrait;
...
另一种方法是将逻辑放在app/Http/Controllers/controller.php
中的基本控制器中。顺便说一句,您可以看到它已经将traits用于其他功能。您需要使用view composer
看看医生
使用视图生成器是最好的方法。
只需将以下行添加到AppServiceProvider.php内部引导方法:
public function boot()
{
//
view()->composer('*', function ($view) {
$view->with('user', Auth::user()->gameAccounts()->get());
});
}
如果仅在视图中需要它,则可以在AppServiceProvider中使用视图生成器
public function boot()
{
View::composer('layouts.base', function ($view) {
$view->with('gameAccounts', Auth::user()->gameAccounts);
});
}
如果您在全球范围内需要它,您可以将其存储在配置中,也可以存储在AppServiceProvider
中。我想您误解了我的意思。我想通过基本布局访问该变量,以便在我拥有的每个视图中使用它。您不能使用'*'
,每个视图都将运行Auth::user()->gameAccounts()->get()
。您必须指定基本布局/模板视图。