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

MUH*_*yab 1 php laravel laravel-livewire

我在 laravel 项目中使用 livewire 2.2 和 laravel 7.24。当我使用加载组件时

Route::get('/path', ComponentClassPath);
Run Code Online (Sandbox Code Playgroud)

它有效,但是当我在刀片视图中加载我的 livewire 组件时。例如,像这样的 test.blade.php:

@extends('layouts.app')

@section('content')
    @livewire("my-livewire-component")
@endsection
Run Code Online (Sandbox Code Playgroud)

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

未定义变量:插槽(视图:E:\xampp\htdocs\lw\resources\views\layouts\app.blade.php)。

应用程序.blade.php

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

   @livewireScripts
</body>
Run Code Online (Sandbox Code Playgroud)

任何解决方案?

Qir*_*rel 5

由于您使用的是@section指令(您@extend在其中布局并使用部分),而不是组件$slot方法(请参阅https://laravel.com/docs/8.x/blade#slots),您应该使用@yield而不是呼应“特殊”$slot变量。

或者,您可以使用插槽方法,但您通常会选择其中之一。使用这种方法意味着您的刀片文件的结构不同,并且任何一种方法都没有错——只要在选择哪个时保持一致即可。

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

<div class="container">
    @yield('content')
</div>
Run Code Online (Sandbox Code Playgroud)