Всем привет! Пример с полем, которое ничего не сохраняет но выводит кнопку с модальным окном в MoonShine. Может потребоваться если необходимо вывести дополнительную информацию. В примере использую просто вывод ID текущей записи, но логика получения данных может строится как в самом поле, так и через дополнительный blade компонент или же асинхронным запросом в js
Само поле выглядит простым, мы указали вьюху и также ее используем для индексной страницы и заблокировали процессы сохранения и вывода в экспорте
<?php
declare(strict_types=1);
namespace App\MoonShine\Fields;
use Illuminate\Database\Eloquent\Model;
use MoonShine\Fields\Field;
final class ModalInfoField extends Field
{
protected static string $view = 'moonshine.fields.modal-info';
public function indexViewValue(Model $item, bool $container = true): string
{
return view($this->getView(), [
'item' => $item,
'resource' => $this->resource()
])->render();
}
public function save(Model $item): Model
{
return $item;
}
public function formViewValue(Model $item): mixed
{
return '';
}
public function exportViewValue(Model $item): string
{
return '';
}
}
Вьюха использует UI муншайн с модальным окном
<x-moonshine::modal wide title="Title">
<div>
{{ $item->id }}
div>
<x-slot name="outerHtml">
<x-moonshine::link @click.prevent="toggleModal;">
Information
x-moonshine::link>
x-slot>
x-moonshine::modal>
Тоже самое можно было бы реализовать с помощью поля NoInput, но на мой взгляд так получилось намного лучше
Оставить комментарий