В MoonShine есть возможность работать в привычной манере с использованием контроллеров
Мы предоставляем вам свой базовый контроллер, который помогает удобно работать с UI и рендерить свои view с MoonShine layout
Полезно для отображения своих сложных решений или написания дополнительных обработчиков
# Сгенерировать контроллер
php artisan moonshine:controller
# Отобразить blade view
namespace App\MoonShine\Controllers; use MoonShine\MoonShineRequest;use MoonShine\Http\Controllers\MoonshineController;use Illuminate\Contracts\View\View; final class CustomViewController extends MoonshineController{ public function __invoke(MoonShineRequest $request): View { return $this ->view('path_to_blade', ['param' => 'value']) //->setLayout('custom_layout') ->render(); }}
# Отобразить страницу
namespace App\MoonShine\Controllers; use MoonShine\MoonShineRequest;use MoonShine\Http\Controllers\MoonshineController;use MoonShine\Pages\Page; final class CustomViewController extends MoonshineController{ public function __invoke(MoonShineRequest $request): Page { return MyPage::make(); }}
# Вывести уведомление
namespace App\MoonShine\Controllers; use MoonShine\MoonShineRequest;use MoonShine\Http\Controllers\MoonshineController;use Symfony\Component\HttpFoundation\Response; final class CustomViewController extends MoonshineController{ public function __invoke(MoonShineRequest $request): Response { $this->toast('Hello world'); return back(); }}
# Отправить уведомление
namespace App\MoonShine\Controllers; use MoonShine\MoonShineRequest;use MoonShine\Http\Controllers\MoonshineController;use Symfony\Component\HttpFoundation\Response; final class CustomViewController extends MoonshineController{ public function __invoke(MoonShineRequest $request): Response { $this->notification('Message'); return back(); }}
# Получить доступ к странице или ресурсу
namespace App\MoonShine\Controllers; use MoonShine\MoonShineRequest;use MoonShine\Http\Controllers\MoonshineController;use Symfony\Component\HttpFoundation\Response; final class CustomViewController extends MoonshineController{ public function __invoke(MoonShineRequest $request) { // $request->getPage(); // $request->getResource(); }}
# Json ответ
namespace App\MoonShine\Controllers; use MoonShine\MoonShineRequest;use MoonShine\Http\Controllers\MoonshineController;use Symfony\Component\HttpFoundation\Response; final class CustomViewController extends MoonshineController{ public function __invoke(MoonShineRequest $request): Response { return $this->json(message: 'Message', data: [], redirect: null); }}