Laravel ошибка при разборе переменных в боковой панели - PullRequest
0 голосов
/ 20 апреля 2020

Можете ли вы анализировать данные в laravel макетах? Я получаю сообщение об ошибке, когда хочу реализовать динамическую c боковую панель на основе базы данных. Вот мой код

Контроллер

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, и это моя компоновка приложения (содержит все компоненты, такие как Header, SideBar и Footer)

<!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)

Я все еще думаю, не ошиблась ли моя идея реализовать это?

1 Ответ

1 голос
/ 20 апреля 2020

Вы можете передавать переменные в макет боковой панели. Прежде всего, в ваших подпредставлениях, которые расширяют расположение боковой панели, верните переменную kategori с контроллером, как вы обычно делаете. Затем вы можете передать переменную с помощью @extends('admin.layouts.sidebar', ['kategori' => $kategori])

. Если вы хотите, чтобы $kategori был разделен между ALL представлениями, то вы можете сделать следующее:

* От 1030 * до 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 или около того категорий), это не огромный успех взять.

...