РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
647 of 1392 menu

Метод safe

Метод safe применяется к объекту запроса FormRequest и возвращает коллекцию только тех полей, которые прошли валидацию. Первым параметром можно передать массив ключей для извлечения, либо вызвать без параметров для получения всех валидированных данных. Метод гарантирует, что в результат попадут только поля, описанные в правиле rules.

Синтаксис

<?php $safeData = $request->safe(); $safeData = $request->safe(['name', 'email']); ?>

Пример

Давайте создадим класс запроса для валидации пользовательских данных и используем метод safe для получения безопасных полей:

<?php namespace AppHttpRequests; use IlluminateFoundationHttpFormRequest; class UserRequest extends FormRequest { public function authorize(): bool { return true; } public function rules(): array { return [ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users', 'age' => 'nullable|integer|min:18', 'role' => 'required|in:admin,user', 'token' => 'required|string', 'admin_token' => 'required|string', ]; } } ?>

Теперь в контроллере используем метод safe для получения только валидированных данных:

<?php namespace AppHttpControllers; use AppHttpRequestsUserRequest; use AppModelsUser; class UserController extends Controller { public function store(UserRequest $request) { $safeData = $request->safe(); // Доступны только безопасные поля $user = User::create([ 'name' => $safeData['name'], 'email' => $safeData['email'], 'age' => $safeData['age'] ?? null, 'role' => $safeData['role'], ]); return response()->json($user, 201); } } ?>

Результат выполнения кода:

{ "id": 1, "name": "John Doe", "email": "john@example.com", "age": 25, "role": "user", "created_at": "2026-09-07T10:00:00.000000Z", "updated_at": "2026-09-07T10:00:00.000000Z" }

Пример

Давайте используем метод safe с массивом ключей для извлечения только определённых полей:

<?php namespace AppHttpControllers; use AppHttpRequestsUserRequest; class UserController extends Controller { public function update(UserRequest $request) { // Получаем только name и email $safeData = $request->safe(['name', 'email']); // Выводим результат echo "Name: " . $safeData['name'] . "\n"; echo "Email: " . $safeData['email'] . "\n"; // Поле age не будет доступно в $safeData if (isset($safeData['age'])) { echo "Age: " . $safeData['age']; } else { echo "Age field is not safe"; } } } ?>

Результат выполнения кода:

"Name: John Doe" "Email: john@example.com" "Age field is not safe"

Пример

Давайте используем метод safe для получения данных в виде коллекции и работы с ними:

<?php namespace AppHttpControllers; use AppHttpRequestsProfileRequest; class ProfileController extends Controller { public function store(ProfileRequest $request) { $safeData = $request->safe(); // Проверяем наличие полей if ($safeData->has('name')) { echo "Name is present: " . $safeData->get('name') . "\n"; } // Получаем все ключи $keys = $safeData->keys(); echo "Safe fields: " . implode(', ', $keys->toArray()) . "\n"; // Преобразуем в массив $array = $safeData->toArray(); echo "Total fields: " . count($array); } } ?>

Результат выполнения кода:

"Name is present: John Doe" "Safe fields: name, email, age, role" "Total fields: 4"

Смотрите также

  • метод validated,
    который возвращает массив валидированных данных
  • метод rules,
    который определяет правила валидации
  • метод authorize,
    который определяет права доступа к запросу
  • класс FormRequest,
    который является базовым классом для запросов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить