#php #laravel #request
#php #laravel #запрос
Вопрос:
У меня есть следующие входные данные
{
"password":"password",
"environment_roles":[
{
"environment_id":"",
"role_id":""
}
],
"admin":true
}
и иметь класс запроса со следующими правилами :
public function rules()
{
return [
'password' => 'required|min:6|regex:/^(?=.*[a-z])(?=.*[A-Z])(?=.*d). $/',
'environment_roles' => 'array',
'environment_roles.*.role_id' => 'required_if:admin,false|exists:roles,role_id',
'environment_roles.*.environment_id' => 'required_if:admin,false|exists:environment,environment_id',
'admin' => 'sometimes'
];
}
Но он показывает следующую ошибку проверки, если я ввожу вышеуказанный ввод, который имеет admin
значение as true
.
"validation": {
"environment_roles.0.role_id": [
"The selected environment_roles.0.role_id is invalid."
],
"environment_roles.0.environment_id": [
"The selected environment_roles.0.environment_id is invalid."
]
},
Как я могу это исправить. Мне нужно проверить environment_roles.*.role_id
и environment_roles.*.environment_id
когда значение для admin
равно true.
Комментарии:
1. показывает какое сообщение проверки?
2. вы изучали
exclude_if
exclude_unless
правила и?
Ответ №1:
Если вы всегда отправляете admin prop, было бы более подходящим сделать его обнуляемым, а не обязательным. Вы могли бы попробовать с этим:
public function rules()
{
return [
'password' => 'required|min:6|regex:/^(?=.*[a-z])(?=.*[A-Z])(?=.*d). $/',
'environment_roles' => 'array',
'environment_roles.*.role_id' => 'nullable|required_if:admin,false|exists:roles,role_id',
'environment_roles.*.environment_id' => 'nullable|required_if:admin,false|exists:environment,environment_id',
'admin' => 'bool|sometimes'
];
}
Но ваша ошибка показывает, что роль и идентификатор среды не существуют в базе данных (правило exists ). Установка для этих двух полей значения nullable означает, что оно не вызовет правило exists .