Я использую класс Laravel Validator
для выполнения некоторой базовой проверки в массиве.
Мой массив:
$employee['name']='name'; $employee['address']='address'; $employee['department']['department_name']='deptname'; $employee['department']['department_address']='deptaddress';
У меня есть правила проверки, как показано ниже:
$rules = array( 'name'=> 'required', 'address' => 'required', 'department.department_name' => 'sometimes|required' )
И пользовательские сообщения, как показано ниже:
$messages = array( 'name.required' => 'Employee Name is required', 'address.required' => 'Address is required' 'department.department_name.required' => 'Department name is required' )
Я буду использовать Validator::make($employee, $rules, $messages);
Согласно моим правилам, department_name
должно быть проверено тогда и только тогда, когда оно присутствует в массиве. Но в настоящее время Validator
не проверяет department_name
когда он присутствует и пуст. Любые идеи, что я могу делать неправильно?
Вы немного ошибаетесь, смотрите здесь документы
там упоминается Если у меня есть $photos['profile']
тогда моя проверка будет выглядеть так
$validator = Validator::make($request->all(), [ 'photos.profile' => 'required|image', ]);
Из приведенного выше примера. В вашем случае это должно быть так
$rules = array( 'name'=> 'required', 'address' => 'required', 'employee.department.department_name' => 'sometimes|required' )
Поскольку у вас есть массив вроде этого $employee['department']['department_name']
Так $message
будет идти так
$messages = array( 'name.required' => 'Employee Name is required', 'address.required' => 'Address is required' 'employee.department.department_name.required' => 'Department name is required' )