Advanced

MoonShineJsonResponse

Основы

MoonShineJsonResponse наследует Illuminate\Http\JsonResponse и дополнен вспомогательными методами для взаимодействия с frontend частью интерфейса админ-панели после обработки запроса.

Методы

Toast

Метод toast() вызывает стандартное всплывающее уведомление админ-панели.

toast(string $value, ToastType $type = ToastType::DEFAULT, null|int|false $duration = null)

Пример:

MoonShineJsonResponse::make()->toast('My message', ToastType::SUCCESS, duration: 3000);

Редирект

Метод redirect() выполнит редирект на указанный url.

redirect(string $value)

Пример:

MoonShineJsonResponse::make()->redirect('/');

Events

Метод events() добавляет в ответ JSEvents, которые будут вызваны после обработки асинхронного запроса.

events(array $events)

Пример:

MoonShineJsonResponse::make()->events([AlpineJs::event(JsEvent::TABLE_UPDATED, 'index')]);

Html

Метод html() подставит нужный HTML-код в селектор, который был указан при создании компонента, инициирующего запрос.

html(string|array $value, HtmlMode $mode = HtmlMode::INNER_HTML)
  • $value - значение, которое нужно подставить в селектор,
  • $mode - режим замены контента в селекторе.

HtmlMode является Enum, которому доступны следующие значения:

enum HtmlMode: string
{
case INNER_HTML = 'inner_html';
 
case OUTER_HTML = 'outer_html';
 
case BEFORE_BEGIN = 'beforebegin';
 
case AFTER_BEGIN = 'afterbegin';
 
case BEFORE_END = 'beforeend';
 
case AFTER_END = 'afterend';
}

В следующем примере значение Content будет подставлено в селектор #my-selector

ActionButton::make('Button Label', '/endpoint')->async(selector: '#my-selector')
 
//...
 
MoonShineJsonResponse::make()->html('Content');

HtmlData

Метод htmlData() позволяет указать сразу несколько селекторов и HTML контент для подстановки в данные селекторы.

htmlData(string|array $value, string $selector, HtmlMode $mode = HtmlMode::INNER_HTML)

Пример:

MoonShineJsonResponse::make()
->htmlData((string) Text::make('One'), '#selector1')
->htmlData((string) Text::make('Two'), '#selector2', HtmlMode::BEFORE_END)