Основы
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)