首页 > 解决方案 > 将变量从控制器引用到所有刀片 Laravel 5

问题描述

我在控制器中编写了返回 some 的代码,$data我想在所有刀片中引用它,我可以为每个页面创建路由,但我不喜欢这种方式。我认为如果我参考这个包括导航栏等应该会更好......但是是否可以在没有url的情况下制作$data路线?layout.blade因为我不想出现我的layout.blade,所以我的问题是,获得$data每个刀片的最佳方法是什么?

标签: phplaravel-5

解决方案


您可能需要一个视图作曲家。视图作曲家是通过 php 对刀片进行扩展,在刀片之前运行。

在应用服务提供商中,您设置要查看作曲家类的视图。

use Illuminate\Support\Facades\View;
use App\Http\ViewComposers\LayoutComposer;

class AppServiceProvider extends ServiceProvider
{
     public function boot()
     {
          View::composer('layout', LayoutComposer::class);
     }
 }

然后在课堂上写下你的逻辑。

use Illuminate\View\View;

class LayoutComposer
{
    public function compose(View $view)
    {
        $data = Model::where('id',###)->first();

        return $view->with(['data' => $data]);
    }

}

https://laravel.com/docs/7.x/views#view-composers


推荐阅读