Компонент как страница в Livewire
Пусть страница списка постов состоит из одного блока. Рядом всё равно лежит отдельное представление: оно только вставляет этот блок и больше ничего не делает. Адрес, пустой файл и компонент приходится держать тремя кусками ради одного экрана.
В web.php для этого есть
метод livewire у
Route: он связывает путь
и класс компонента. Livewire
сам подставит макет по умолчанию
из app.blade.php, если
компонент не просит другой.
Давайте зададим этот макет
в app.blade.php:
<!DOCTYPE html>
<html>
<head>
<title>Page</title>
</head>
<body>
{{ $slot }}
</body>
</html>
Давайте создадим компонент
PostPage:
php artisan make:livewire PostPage --class
Давайте оставим в классе
один метод render:
<?php
namespace App\Livewire;
use Livewire\Component;
class PostPage extends Component
{
public function render()
{
return view('livewire.post-page');
}
}
?>
Давайте добавим маршрут с подключением класса:
<?php
use App\Livewire\PostPage;
Route::livewire('/posts', PostPage::class);
?>
Давайте в шаблоне компонента
оставим только блок: макет уже
снаружи, x-layout не нужен:
<div>
Posts
</div>
Создайте компонент EmployeePage
и откройте его как страницу
по адресу /employees.