Метод in
Метод in класса Rule применяется для валидации полей формы и проверяет, что значение поля содержится в заданном массиве допустимых значений. Первым параметром передаётся массив значений, с которыми должно совпадать значение поля. Если значение не найдено в массиве, валидация не проходит.
Синтаксис
<?php
use Illuminate\Validation\Rule;
$rule = Rule::in(['value1', 'value2', 'value3']);
?>
Пример
Давайте проверим, что значение поля 'status' может быть только 'published' или 'draft':
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException;
class ArticleController extends Controller
{
public function store(Request $request)
{
$request->validate([
'status' => ['required', Rule::in(['published', 'draft'])],
'title' => ['required', 'string'],
]);
return response()->json(['message' => 'Article created']);
}
}
?>
Пример
Давайте проверим, что значение поля 'role' является допустимой ролью пользователя:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;
class UserController extends Controller
{
public function update(Request $request)
{
$validated = $request->validate([
'role' => [
'required',
Rule::in(['admin', 'moderator', 'user']),
],
'email' => ['required', 'email'],
]);
// Update user
return response()->json(['success' => true]);
}
}
?>
Пример
Давайте используем in в форме запроса для валидации поля 'payment_method':
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class OrderRequest extends FormRequest
{
public function rules(): array
{
return [
'payment_method' => ['required', Rule::in(['card', 'cash', 'bank'])],
'amount' => ['required', 'numeric', 'min:1'],
];
}
}
?>
Пример
Давайте используем динамический массив допустимых значений для валидации поля 'category_id':
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;
use App\Models\Category;
class ProductController extends Controller
{
public function store(Request $request)
{
$categoryIds = Category::pluck('id')->toArray();
$request->validate([
'category_id' => ['required', Rule::in($categoryIds)],
'name' => ['required', 'string'],
'price' => ['required', 'numeric'],
]);
return response()->json(['message' => 'Product created']);
}
}
?>
Результат выполнения кода при успешной валидации:
"Product created"
Смотрите также
-
метод
unique,
который проверяет уникальность значения в таблице -
метод
exists,
который проверяет существование значения в таблице -
метод
правило in,
которое является альтернативой метода in класса Rule -
метод
not_in,
которое проверяет, что значение не входит в указанный список