Правило in
Правило in используется для валидации входящих данных и проверяет, что значение поля присутствует в указанном списке. Оно применяется в массиве правил валидации вместе с другими правилами. Первым параметром передаётся список допустимых значений через запятую. Если значение не найдено в списке, валидация не проходит.
Синтаксис
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
$rules = [
'field' => 'in:value1,value2,value3',
];
?>
Пример
Давайте провалидируем поле 'status' на допустимые значения:
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
$data = ['status' => 'published'];
$rules = [
'status' => 'in:draft,published,archived',
];
$validator = Validator::make($data, $rules);
if ($validator->fails()) {
$res = $validator->errors()->all();
} else {
$res = 'Validation passed';
}
echo json_encode($res);
?>
Результат выполнения кода:
"Validation passed"
Пример
Если значение не входит в список, валидация не проходит:
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
$data = ['role' => 'admin'];
$rules = [
'role' => 'in:user,moderator,manager',
];
$validator = Validator::make($data, $rules);
if ($validator->fails()) {
$res = $validator->errors()->all();
} else {
$res = 'Validation passed';
}
echo json_encode($res);
?>
Результат выполнения кода:
["The selected role is invalid."]
Пример
Использование правила in с числовыми значениями:
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
$data = ['priority' => 2];
$rules = [
'priority' => 'in:1,2,3,4,5',
];
$validator = Validator::make($data, $rules);
if ($validator->fails()) {
$res = $validator->errors()->all();
} else {
$res = 'Validation passed';
}
echo json_encode($res);
?>
Результат выполнения кода:
"Validation passed"
Пример
Использование правила in в FormRequest:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class ArticleRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'status' => 'required|in:draft,published,archived',
'type' => 'in:news,blog,review',
];
}
}
?>