Для вывода кнопки просмотра ресурса в списке нужно переопределить свойство $activeShowButton в компоненте вывода списка ресурсов.
app/Http/Livewire/Admin/Posts/PostList.php
<?php
namespace App\Http\Livewire\Admin\Posts;
use App\Models\Post;
use WebVovan\RockCms\Http\Livewire\ResourceListComponent;
use WebVovan\RockCms\View\Components\ActionColumn;
use WebVovan\RockCms\View\Components\Column;
use WebVovan\RockCms\View\Components\EditLinkColumn;
class PostList extends ResourceListComponent
{
public string $resourceClass = Post::class;
public string $nameRouteResourceCreate = 'posts.create';
public string $nameRouteResourceEdit = 'posts.edit';
public string $nameRouteResourceShow = 'posts.show';
// Активация кнопки просмотра ресурса
public bool $activeShowButton = true;
public array $search = ['title'];
/**
* Колонки
*
* @return array
*/
public function columns(): array
{
return [
Column::make('id', 'ID')
->sortable(),
EditLinkColumn::make('title', 'Заголовок')
->sortable(),
Column::make('created_at', 'Дата'),
ActionColumn::make('Действия')
->addClass('text-center'),
];
}
}
В blade шаблоне в компонент нужно передать модель для редактирования.
resources/views/admin/posts/show.blade.php
...
@section('content')
<livewire:admin.posts.post-item :resource="$model"/>
@stop
php artisan make:livewire Admin/Posts/PostShow
Для правильной работы нужно отнаследоваться от ResourceComponent.
app/Http/Livewire/Admin/Posts/PostShow.php
<?php
namespace App\Http\Livewire\Admin\Posts;
use App\Models\Post;
use WebVovan\RockCms\Http\Livewire\ResourceComponent;
class PostShow extends ResourceComponent
{
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()
{
}
public function save()
{
}
public function render()
{
return view('livewire.admin.posts.post-show');
}
}
В шаблоне компонента просто перечисляем список полей с атрибутом readonly.
resources/views/livewire/admin/posts/post-show.blade.php
<div>
<x-rock-cms::fields.input readonly field="resource.title" title="Заголовок"/>
<x-rock-cms::fields.editor
:model="$resource->desc"
field="resource.desc"
enableMedia
readonly
title="Описание"/>
</div>
В итоге получаем такую страницу.