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

Правило missing

Правило missing применяется к полю в массиве входных данных и проверяет, что это поле полностью отсутствует в запросе. В отличие от правила nullable, которое позволяет полю быть пустым, или правила required, которое требует присутствия поля, правило missing требует, чтобы ключ поля вообще не передавался в запросе. Это особенно полезно при обновлении ресурсов, когда нужно различать отсутствие поля и отправку пустого значения.

Правило не принимает дополнительных параметров. Оно работает как на уровне отдельных полей, так и при валидации вложенных структур данных. Если поле присутствует в запросе (даже с пустым значением), валидация будет провалена.

Синтаксис

<?php use Illuminate\Validation\Rule; $rules = [ 'field_name' => 'missing', ]; ?>

Правило также можно использовать через класс Rule:

<?php use Illuminate\Validation\Rule; $rules = [ 'field_name' => [Rule::missing()], ]; ?>

Пример

Давайте создадим валидацию для обновления профиля пользователя, где поле 'password' должно отсутствовать в запросе, если пароль не меняется:

<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class UpdateProfileRequest extends FormRequest { public function authorize() { return true; } public function rules() { return [ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255', 'password' => 'missing', ]; } } ?>

Пример

Давайте используем правило missing с вложенным полем в контроллере:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class UserController extends Controller { public function update(Request $request) { $validator = Validator::make($request->all(), [ 'user_id' => 'required|integer', 'user.role' => 'missing', 'user.department' => 'string|nullable', ]); if ($validator->fails()) { return response()->json([ 'errors' => $validator->errors() ], 422); } return response()->json([ 'message' => 'User updated successfully' ]); } } ?>

Результат выполнения при отправке запроса без поля 'user.role':

"User updated successfully"

Если же отправить запрос с полем 'user.role', даже с пустым значением, валидация не пройдёт.

Пример

Давайте создадим более сложную валидацию, где правило missing используется вместе с другими правилами:

<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rule; class PostRequest extends FormRequest { public function authorize() { return true; } public function rules() { return [ 'title' => 'required|string|max:255', 'content' => 'required|string', 'status' => ['required', Rule::in(['draft', 'published', 'archived'])], 'published_at' => ['missing', 'date'], 'author_id' => 'nullable|integer', ]; } } ?>

В этом примере поле 'published_at' должно отсутствовать в запросе, но если оно всё же будет отправлено, то должно соответствовать формату даты. Это позволяет гибко управлять поведением валидации.

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

  • правило required,
    которое требует обязательного присутствия поля
  • правило nullable,
    которое позволяет полю быть пустым
  • правило present,
    которое проверяет присутствие поля, но не требует значения
  • правило filled,
    которое проверяет, что поле не пустое, если оно присутствует
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить