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

Правило prohibited

Правило prohibited применяется в системе валидации Laravel и используется для запрета передачи определённого поля в запросе. Если поле присутствует в запросе, валидация будет провалена. Первым параметром передаётся имя поля, которое должно отсутствовать.

Это правило особенно полезно в ситуациях, когда нужно защитить определённые поля от изменения через API или когда поле должно присутствовать только при определённых условиях.

Синтаксис

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

В форме запроса:

<?php use Illuminate\Foundation\Http\FormRequest; class UserRequest extends FormRequest { public function rules() { return [ 'password' => 'prohibited', 'email' => 'required|email' ]; } } ?>

Пример

Давайте создадим валидацию, которая запрещает передачу поля 'role':

<?php use Illuminate\Support\Facades\Validator; $data = [ 'name' => 'John', 'role' => 'admin' ]; $validator = Validator::make($data, [ 'name' => 'required|string', 'role' => 'prohibited' ]); if ($validator->fails()) { echo $validator->errors()->first(); } ?>

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

"The role field is prohibited."

Пример

Давайте используем правило prohibited вместе с условной валидацией через prohibited_if. Запретим поле 'password', если передано поле 'social_login':

<?php use Illuminate\Support\Facades\Validator; $data = [ 'social_login' => true, 'password' => 'secret123' ]; $validator = Validator::make($data, [ 'social_login' => 'required|boolean', 'password' => 'prohibited_if:social_login,true' ]); if ($validator->fails()) { echo $validator->errors()->first(); } ?>

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

"The password field is prohibited when social login is true."

Пример

Давайте используем правило prohibited в классе FormRequest. Создадим запрос для обновления пользователя, где поле 'id' запрещено:

<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class UpdateUserRequest extends FormRequest { public function authorize() { return true; } public function rules() { return [ 'id' => 'prohibited', 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users,email,' . $this->user()->id ]; } public function messages() { return [ 'id.prohibited' => 'The user ID cannot be changed.' ]; } } ?>

Теперь использование этого запроса в контроллере:

<?php namespace App\Http\Controllers; use App\Http\Requests\UpdateUserRequest; use App\Models\User; class UserController extends Controller { public function update(UpdateUserRequest $request, User $user) { $validated = $request->validated(); $user->update($validated); echo "User updated successfully."; } } ?>

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

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