# Основы
Валидация выполнена так же просто, как и в FormRequests
классах от Laravel.
Достаточно в привычной нам манере добавлять правила в методе rules()
ресурса модели.
namespace App\MoonShine\Resources; use App\Models\Post;use MoonShine\Fields\Text;use MoonShine\Resources\ModelResource; class PostResource extends ModelResource{ protected string $model = Post::class; protected string $title = 'Posts'; //... public function rules($item): array { return [ 'title' => ['required', 'string', 'min:5'] ]; } //...}
# Сообщения
Используя метод validationMessages()
можно создать свои сообщения об ошибках валидации.
namespace App\MoonShine\Resources; use App\Models\Post;use MoonShine\Fields\Text;use MoonShine\Resources\ModelResource; class PostResource extends ModelResource{ protected string $model = Post::class; protected string $title = 'Posts'; //... public function validationMessages(): array { return [ 'email.required' => 'Required email' ]; } //...}
# Подготовка входных данных для проверки
Если вам нужно подготовить или очистить какие-либо данные из запроса, прежде чем применять свои правила проверки,
вы можете использовать метод prepareForValidation()
.
namespace App\MoonShine\Resources; use App\Models\Post;use MoonShine\Fields\Text;use MoonShine\Resources\ModelResource; class PostResource extends ModelResource{ protected string $model = Post::class; protected string $title = 'Posts'; //... public function prepareForValidation(): void { moonshineRequest()?->merge([ 'email' => request() ?->string('email') ->lower() ->value() ]); } //...}
# Кнопки
Для добавления кнопок используются ActionButton и методы FormButtons
или buttons
в ресурсе
public function formButtons(): array{ return [ ActionButton::make('Link', '/endpoint'), ];}
Также можно воспользоваться методом buttons
, но в таком случае кнопки будут и на всех остальных страницах ресурса
public function buttons(): array{ return [ ActionButton::make('Link', '/endpoint'), ];}
# Асинхронный режим
Переключить режим без перезагрузки для сохранения данных
namespace App\MoonShine\Resources; use App\Models\Post;use MoonShine\Resources\ModelResource; class PostResource extends ModelResource{ protected string $model = Post::class; protected string $title = 'Posts'; protected bool $isAsync = true; // ...}
Переключить режим формы в Precognitive валидацию
namespace App\MoonShine\Resources; use App\Models\Post;use MoonShine\Resources\ModelResource; class PostResource extends ModelResource{ protected string $model = Post::class; protected string $title = 'Posts'; protected bool $isPrecognitive = true; // ...}