2017-02-06 2 views
1

Я работаю над проектом в Laravel 5.4, и я хочу выполнить правило проверки «существует» в двух необязательных полях (только когда задано значение).Применить «существует» для необязательного поля в Laravel

Я попытался следующие:

// Define validation rules 
$validator = Validator::make($request->all(), [ 
    'user_group_id' => 'sometimes|exists:groups,id', 
    'user_organisation_id' => 'sometimes|exists:organisations,id', 
    // my other required fields here... 
]); 

// Validate store request 
if ($validator->fails()) 
    return redirect() 
     ->back() 
     ->withErrors($validator) 
     ->withInput(); 

В моем приложении, пользователь не будет всегда принадлежать к группе или организации. Так что, когда я представляю свою форму без выбора группы/организации, я ожидал, что проверка не выполнить, однако это - я получаю следующие ошибки:

The selected user group id is invalid. 
The selected user organisation id is invalid. 

Как вы делаете «существует» правило проверки для применения, только когда задано значение? использование флага «иногда», похоже, не работает.


Я пытался что-то вроде этого, и это, кажется, работает:

// Define validation rules 
if (!empty($request->user_group)) $rules['user_group'] = 'exists:groups,id'; 
if (!empty($request->user_organisation)) $rules['user_organisation'] = 'exists:organisations,id'; 
$rules = [ 
    // normal required field validations here 
]; 
$validator = Validator::make($request->all(), $rules); 

Это единственный способ достичь своей условной проверки?

ответ

1

Я обычно использую sometimes с required я не подтвердил/доказанный, почему мне нужно искомая с ним, хотя, так что я в конечном итоге с чем-то вроде этого:

'user_group_id' => 'sometimes|required|exists:groups,id', 

PS: На основании моего небольшого опыта с Ларавелем у меня была подобная встреча. Проверка от https://laravel.com/docs/5.2/validation#conditionally-adding-rules