Контроллеры

В 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);
}
}