【发布时间】:2021-10-13 20:32:45
【问题描述】:
在使用 Jetstream 全新安装 Laravel 8.4 时,我有一个(完整的)Livewire 组件,它不会在 Blade 组件槽中呈现。
路线:
// App/Livewire/Page/Index -> livewire full component
Route::get('pages', Page::class)->name('page.index');
Liviwire组件类app/livewire/Page/Index.php
public $search = '';
public function updatingSearch() {
$this->resetPage();
}
public function render()
{
$pages = Page::where(function($query) {
$query->where('name', 'like', '%' . $this->search . '%')
->orWhere('description', 'like', '%' . $this->search . '%');
})
->paginate(10);
return view('livewire.page.index', [
'pages' => $pages
]);
}
应用布局(layouts/app.blade.php)
<body class="font-sans antialiased">
<x-jet-banner />
<div class="min-h-screen bg-gray-100">
@livewire('navigation-menu')
<!-- Page Heading -->
@if (isset($header))
<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>
@endif
<!-- Page Content -->
<main>
{{ $slot }}
</main>
</div>
@stack('modals')
@livewireScripts
</body>
Liviwire 组件
<div>
<x-slot name="header">
<div class="sm:flex sm:items-center sm:justify-between">
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
{{ __('Dogs') }}
</h2>
<!-- This input doesn't bind to search property within the Livewire class because it's inside a named slot -->
<input type="text" wire:model="search">
</div>
</x-slot>
<!-- This input successfully binds to search as expected because it is in the default slot -->
<input type="text" wire:model="search">
</div>
经过一些调试,发现 livewire 在布局的默认插槽内按预期工作,但在命名插槽(标题)内却没有。
有什么解决办法吗?
【问题讨论】:
标签: laravel laravel-blade laravel-livewire jetstream