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

Правило nullable

Правило nullable используется в валидации для указания, что поле может отсутствовать в запросе или содержать значение null. Это полезно, когда поле формы не является обязательным, но может быть заполнено. Если поле присутствует в запросе, применяются остальные правила валидации. Если поле отсутствует или передано как null, другие правила игнорируются.

Синтаксис

<?php use Illuminate\Validation\Rule; $rules = [ 'field' => 'nullable|string|max:255' ]; ?>

Пример

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

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class ProfileController extends Controller { public function update(Request $request) { $validator = Validator::make($request->all(), [ 'bio' => 'nullable|string|max:500' ]); if ($validator->fails()) { return response()->json($validator->errors(), 422); } return response()->json(['message' => 'Profile updated']); } } ?>

Пример

Рассмотрим работу правила nullable на примере валидации поста:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class PostController extends Controller { public function store(Request $request) { $validator = Validator::make($request->all(), [ 'title' => 'required|string|max:255', 'content' => 'required|string', 'image' => 'nullable|image|max:2048', 'category_id' => 'nullable|integer|exists:categories,id' ]); if ($validator->fails()) { return back()->withErrors($validator); } // ... save post logic return redirect('/posts'); } } ?>

Пример

Использование nullable с sometimes для динамической валидации:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class UserController extends Controller { public function update(Request $request, $id) { $validator = Validator::make($request->all(), [ 'email' => 'sometimes|nullable|email|unique:users,email,' . $id, 'phone' => 'nullable|string|regex:/^[0-9]{10}$/', 'website' => 'nullable|url|max:255' ]); if ($validator->fails()) { return response()->json($validator->errors(), 422); } return response()->json(['message' => 'User updated']); } } ?>

Пример

Использование nullable в правилах валидации массива:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class ProjectController extends Controller { public function store(Request $request) { $validator = Validator::make($request->all(), [ 'name' => 'required|string|max:100', 'description' => 'nullable|string|max:1000', 'start_date' => 'nullable|date|after:today', 'end_date' => 'nullable|date|after:start_date', 'tags' => 'nullable|array|max:5', 'tags.*' => 'string|max:20' ]); if ($validator->fails()) { return back()->withErrors($validator)->withInput(); } $res = $validator->validated(); return response()->json($res); } } ?>

Результат выполнения кода при запросе без необязательных полей:

{"name": "My Project"}

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

{"name": "My Project", "description": "Awesome project", "tags": ["php", "laravel"]}

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

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