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

Правило required_if

Правило required_if применяется к полю формы и делает его обязательным, если другое поле имеет определённое значение. Первым параметром передаётся имя поля-условия, вторым - значение, при котором текущее поле становится обязательным. Можно указать несколько значений через запятую.

Синтаксис

<?php use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; $validator = Validator::make($request->all(), [ 'field' => 'required_if:another_field,value' ]); ?>

Пример

Давайте сделаем поле 'phone' обязательным, если поле 'contact_method' равно 'phone':

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class UserController extends Controller { public function store(Request $request) { $validator = Validator::make($request->all(), [ 'contact_method' => 'required|string|in:email,phone', 'phone' => 'required_if:contact_method,phone|string|min:10', 'email' => 'required_if:contact_method,email|email' ]); if ($validator->fails()) { return response()->json([ 'errors' => $validator->errors() ], 422); } return response()->json([ 'message' => 'User created successfully' ], 201); } } ?>

Результат выполнения кода при отправке формы с 'contact_method' = 'phone' и пустым 'phone':

{ "errors": { "phone": ["The phone field is required when contact method is phone."] } }

Пример

Давайте сделаем поле 'delivery_address' обязательным, если поле 'delivery_type' равно 'courier' или 'post':

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class OrderController extends Controller { public function store(Request $request) { $validator = Validator::make($request->all(), [ 'delivery_type' => 'required|in:self,courier,post', 'delivery_address' => 'required_if:delivery_type,courier,post|string|max:255' ]); if ($validator->fails()) { return response()->json([ 'errors' => $validator->errors() ], 422); } return response()->json([ 'message' => 'Order created successfully' ], 201); } } ?>

Результат выполнения кода при отправке формы с 'delivery_type' = 'courier' и пустым 'delivery_address':

{ "errors": { "delivery_address": ["The delivery address field is required when delivery type is courier or post."] } }

Пример

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

<?php namespace App\Http\Controllers\Auth; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; use App\Models\User; class RegisterController extends Controller { public function register(Request $request) { $validator = Validator::make($request->all(), [ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users', 'password' => 'required|string|min:8|confirmed', 'user_type' => 'required|in:individual,business', 'company' => 'required_if:user_type,business|string|max:255' ]); if ($validator->fails()) { return response()->json([ 'errors' => $validator->errors() ], 422); } $user = User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => bcrypt($request->password), 'user_type' => $request->user_type, 'company' => $request->company ]); return response()->json([ 'message' => 'User registered successfully', 'user' => $user ], 201); } } ?>

Результат выполнения кода при отправке формы с 'user_type' = 'business' и пустым 'company':

{ "errors": { "company": ["The company field is required when user type is business."] } }

Пример

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

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class PaymentController extends Controller { public function store(Request $request) { $validator = Validator::make($request->all(), [ 'payment_method' => 'required|in:card,cash,bank', 'card_number' => 'required_if:payment_method,card|prohibited_if:payment_method,cash,bank|string|size:16', 'bank_account' => 'required_if:payment_method,bank|prohibited_if:payment_method,card,cash|string|size:20' ]); if ($validator->fails()) { return response()->json([ 'errors' => $validator->errors() ], 422); } return response()->json([ 'message' => 'Payment processed successfully' ], 200); } } ?>

Результат выполнения кода при отправке формы с 'payment_method' = 'card' и пустым 'card_number':

{ "errors": { "card_number": ["The card number field is required when payment method is card."] } }

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

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