Livewire 2.2:app.blade.php 中未定义的变量槽

Livewire 2.2: Undefined variable slot in app.blade.php

我在 laravel 项目中使用带 laravel 7.24 的 livewire 2.2。当我使用

加载组件时
Route::get('/path', ComponentClassPath);

它可以工作,但是当我在 blade 视图中加载我的 livewire 组件时。例如,test.blade.php 像这样:

@extends('layouts.app')

@section('content')
    @livewire("my-livewire-component")
@endsection

它不起作用并显示以下错误:

Undefined variable: slot (View: E:\xampp\htdocs\lw\resources\views\layouts\app.blade.php) .

app.blade.php

<head>
   @livewireStyles
</head>
<body>
   <div class="container">
       {{ $slot }}
   </div>

   @livewireScripts
</body>

有什么解决办法吗?

因为您使用的是 @section 指令(您 @extend 布局,并使用部分),而不是组件 $slot 方法(参见 https://laravel.com/docs/8.x/blade#slots ),您应该使用 @yield 而不是回显“特殊”$slot 变量。

您也可以选择 slots-approach,但您通常会选择其中之一。采用这种方法意味着您的 blade 文件具有不同的结构,并且任何一种方式都没有错 - 只需在您选择的方式上保持一致即可。

要继续使用部分和扩展布局,只需将 {{ $slot }} 替换为 @yield('content'),如

<div class="container">
    @yield('content')
</div>