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)
任何解决方案?
由于您使用的是@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)
| 归档时间: |
|
| 查看次数: |
4774 次 |
| 最近记录: |