我在Jetstream中创建了一个Livewire组件,并将其设置为web.php
路由页面中的完整页面组件,如下所示:
use AppHttpLivewirePostComponent;
...
Route::get('posts/',PostComponent::class)->name('posts');
post-component.blade.php
文件最初有以下代码:
<div>
<h1>If you look to others for fulfillment, you will never truly be fulfilled.</h1>
</div>
如果我点击URL.../posts
,我会得到以下错误:
未定义的变量:头(视图:/home/varrant/laravelapp/resources/views/layouts/appblade.php(
所以我尝试在post-component.blade.php
文件中添加插槽:
<x-app-layout>
<x-slot name="header">
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
{{ __('Dashboard') }}
</h2>
</x-slot>
<div>
<h1>If you look to others for fulfillment, you will never truly be fulfilled.</h1>
</div>
</x-app-layout>
尽管如此,我还是犯了同样的错误。
我错过了什么?我该如何解决这个问题?
我希望这是一个Jetstream
项目。默认情况下,livewire将使用app.blade.php
作为布局。并且该组件将在app.blade.php
的slot
中进行渲染。
但由于它是一个Jetstream项目,所以在布局文件中有一个用于标头的插槽。
<header class="bg-white shadow">
<div class="max-w-7xl mx-auto py-6 px-4 sm:px-6 lg:px-8">
{{ $header }}
</div>
</header>
因此,要解决这个错误,有两种方法。
- 在
PostComponent.php
中将标题作为布局的变量
public function render()
{
return view('livewire.post-component')
->layout('layouts.app', ['header' => 'Post Compoent Page']);
}
- 创建自己的布局,并且只有一个插槽。(想象
mylayout.blade.php
(
<head>
@livewireStyles
</head>
<body>
{{ $slot }}
@livewireScripts
</body>
并在渲染火线组件时使用该布局
public function render()
{
return view('livewire.post-component')->layout('layouts.mylayout');
}
有一个关于这个主题的github
问题(一个封闭的问题(。但请密切关注。由于Jetstream
处于早期阶段。