Версия источника: 4880e8b4372c96001c2e052be28b68a95d31252b
Синхронизировано: 2026-11-09T11:15:07.649Z
Источник: https://github.com/sergey-from-riders/vibecoding-base/tree/4880e8b4372c96001c2e052be28b68a95d31252b

<a id="frameworks-laravel-validation"></a>

# Laravel: Form Request и Policy

## Коротко

Валидируйте вход и отдельно проверяйте право на объект. В модель передавайте только разрешённые поля.

## Плохо

```php
$order->update($request->all());
```

## Хорошо

```php
// Контроллер: UpdateOrderRequest проверяет title
Gate::authorize('update', $order);
$order->update($request->safe()->only(['title']));
```

## Почему

Проверка формата не даёт права редактировать чужой заказ. Поля вроде owner_id нельзя принимать из произвольного тела запроса.

## Когда применять

Laravel 12.x, Form Request и зарегистрированная Policy; в модели настроен `$fillable`. Входящий DTO не заменяет объектную авторизацию.

## Человек

Определяет права ролей и редактируемые поля заказа.

## Агент

Создаёт Form Request, Policy и тесты запрещённых полей/чужих объектов.

## Пример применения

В кабинете клиент меняет название своего заказа. `UpdateOrderRequest` проверяет строку title, Policy сопоставляет владельца с текущим пользователем, контроллер записывает только title.

## Как проверить

- Чужой заказ даёт отказ.
- Лишние owner_id и is_paid не меняют запись.

## Источники

- [Validation](https://laravel.com/docs/12.x/validation)
- [Authorization](https://laravel.com/docs/12.x/authorization)

Уровень: Рекомендуется. Проверено: 2026-11-09. Изменено: 2026-11-09.

[Исходный файл](https://github.com/sergey-from-riders/vibecoding-base/blob/4880e8b4372c96001c2e052be28b68a95d31252b/registry/standards/frameworks/platforms/rules/laravel-validation.md)
