Laravel 8 Livewire组件未定义的变量:标头



我在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.phpslot中进行渲染。

但由于它是一个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>

因此,要解决这个错误,有两种方法。

  1. PostComponent.php中将标题作为布局的变量

public function render()
{
return view('livewire.post-component')
->layout('layouts.app', ['header' => 'Post Compoent Page']);
}
  1. 创建自己的布局,并且只有一个插槽。(想象mylayout.blade.php(

<head>
@livewireStyles
</head>
<body>
{{ $slot }}
@livewireScripts
</body>

并在渲染火线组件时使用该布局

public function render()
{
return view('livewire.post-component')->layout('layouts.mylayout');
}

有一个关于这个主题的github问题(一个封闭的问题(。但请密切关注。由于Jetstream处于早期阶段。

相关内容

  • 没有找到相关文章

最新更新