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>
我在 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>