Переменная $model передается из роута. Подробнее про настройку роутов здесь.
Создание livewire компонента:
php artisan make:livewire Admin/Posts/PostItem
Для правильной работы нужно отнаследоваться от ResourceComponent.
// app/Http/Livewire/Admin/Posts/PostItem.php
<?php
namespace App\Http\Livewire\Admin\Posts;
use App\Models\Post;
use WebVovan\RockCms\Http\Livewire\ResourceComponent;
class PostItem extends ResourceComponent
{
// Eloquent модель
public Post $resource;
// Класс ресурса
public string $resourceClass = Post::class;
// Именованный маршрут списка ресурсов
public string $nameRouteResourceList = 'posts.list';
// Именованный маршрут редактирования ресурса
public string $nameRouteResourceEdit = 'posts.edit';
// Правила валидации полей
protected $rules = [
'resource.title' => 'string|required',
'resource.desc' => 'string',
];
/**
* Вызывается один раз при инициализации компонента
*/
public function init()
{
$this->resource->title = $this->resource->title ?? '';
$this->resource->desc = $this->resource->desc ?? '';
}
/**
* Вызывается при сохранении ресурса
*/
public function save()
{
$this->resource->save();
}
public function render()
{
return view('livewire.admin.posts.post-item');
}
}
В шаблоне компонента просто перечисляем список полей.
Rock.Cms поставляется с большим количеством уже готовых полей.