Правило not_in
Правило not_in используется для валидации полей форм в Laravel.
Оно проверяет, что значение поля не входит в переданный массив значений.
Если значение присутствует в списке, валидация проваливается.
Правило принимает один параметр - массив значений, которые не должны
совпадать со значением поля.
Синтаксис
<?php
use Illuminate\Support\Facades\Validator;
// В виде строки
$validator = Validator::make($data, [
'field' => 'not_in:value1,value2,value3'
]);
// В виде массива
$validator = Validator::make($data, [
'field' => ['not_in:value1,value2,value3']
]);
?>
В качестве значений можно передавать строки или числа, разделённые запятыми.
Пример
Давайте запретим пользователю выбирать статус 'blocked' и 'deleted':
<?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(), [
'status' => 'not_in:blocked,deleted'
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
return response()->json(['message' => 'Status updated successfully']);
}
}
?>
Результат выполнения кода при отправке статуса 'blocked':
["status" => ["The status must not be in the list of values."]]
Пример
Использование правила not_in в Form Request:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UpdateUserRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'role' => 'required|not_in:admin,superadmin',
'status' => 'not_in:inactive,banned'
];
}
}
?>
При попытке установить роль 'admin' валидация вернёт ошибку:
["role" => ["The role must not be in the list of values."]]
Пример
Использование правила not_in с числовыми значениями:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class ProductController extends Controller
{
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'quantity' => 'not_in:0,-1,-5',
'price' => 'numeric|not_in:0,0.00'
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422);
}
return response()->json(['message' => 'Product created']);
}
}
?>
Результат выполнения при значении quantity равном 0:
["quantity" => ["The quantity must not be in the list of values."]]
Смотрите также
-
правило
in,
которое проверяет наличие значения в списке -
правило
required,
которое проверяет заполненность поля -
правило
numeric,
которое проверяет, что поле содержит число -
правило
exclude_if,
которое исключает поле из валидации при выполнении условия