Laravel侧边栏解析变量时出错

Laravel error when parsing variables in the side bar

能否将数据解析为 laravel 布局?当我想实现基于数据库的动态侧边栏时出现错误。这是我的代码

控制器

public function side_kategori()
    {
        $kategori = Kategori::all();
        return view('admin/layouts/sidebar', ['kategori'=>$kategori]);
    }

型号

 protected $table = 'tb_kategori';
 protected $primaryKey = 'id_kategori';

查看

/*location ('admin/layouts/sidebar.blade.php')*/
           <ul class="children collapse" id="sub-item-1">
                @foreach($kategori as $kat)
                <li>
                    <a href="/kategori/detil_katgori/{{$kat->id_kategori}}">{{$kat->nama_kategori}}</a>
                </li>
                @endforeach
                <li>
                    <a href="#"><i class="fa fa-edit" style="margin-right: 4px"></i>Add</a>
                </li>
            </ul>
        </li>

那是我的 sidebar.blade.php 文件,这是我的应用程序布局(包含所有组件,如页眉、边栏和页脚)

<!DOCTYPE html>
<html>
<head>
    <title>E-Upacara</title>
</head>
<body>
    @include('admin/layouts.head')

    @include('admin/layouts.navigator')

/*I think the error starts here*/
    @include('admin/layouts.sidebar')
    <div class="col-sm-9 col-sm-offset-3 col-lg-10 col-lg-offset-2 main">
        @yield('konten')
    </div>

@include('admin/layouts.footer')

</body>
</html>

错误

Undefined variable: kategori (View: C:\xampp\htdocs\si_laravel\resources\views\admin\layouts\sidebar.blade.php)

我还在想,是不是我的想法执行错了?

您可以将变量传递到侧边栏布局中。首先,在扩展侧边栏布局的子视图中,return kategori 变量与控制器像往常一样。然后你可以用 @extends('admin.layouts.sidebar', ['kategori' => $kategori])

传递变量

如果您希望 $kategoriALL 视图之间共享,则可以执行以下操作:

转到App\Providers\AppServiceProvider.php,在public function boot()内添加

$kategori = Kategori::all();
 view()->share('kategori', $kategori);

这将在所有视图中共享您的类别。

确保包含顶部带有 use App\Kategori; 的模型。

注意:从性能的角度来看,这并不理想,因为在每个视图请求中,您都在数据库中查询 $kategori。你真的应该看看 View composers 来实现这个: https://laravel.com/docs/7.x/views#view-composers

但是,如果 $kategori 很小(可能检索 20 个左右的类别),则不会有太大的影响。