validate()->fails()) { wp_send_json_error(['errors' => $validator->errors()], 423); } return true; } /** * Produce the necessary validation rules and corresponding messages * * @return array */ public static function validations() { return [ [ 'sendTo.type' => 'required', 'sendTo.email' => 'required_if:sendTo.type,email', 'sendTo.field' => 'required_if:sendTo.type,field', 'subject' => 'required', 'message' => 'required', ], [ 'sendTo.type.required' => 'The Send To field is required.', 'sendTo.email.required_if' => 'The Send to Email field is required.', 'sendTo.field.required_if' => 'The Send to Field field is required.', 'sendTo.routing.*.email.required' => 'Please fill all the routing rules above.', ] ]; } /** * Add conditional validations to the validator. * * @param \FluentValidator\Validator $validator * * @return \FluentValidator\Validator */ public static function conditionalValidations(Validator $validator) { $validator->sometimes('sendTo.routing.*.email', 'required', function ($input) { if (ArrayHelper::get($input, 'sendTo.type') !== 'routing') { return false; } $routingInputs = ArrayHelper::get($input, 'sendTo.routing'); $required = false; foreach ($routingInputs as $routingInput) { if (! $routingInput['email'] || ! $routingInput['field'] || ! $routingInput['value']) { $required = true; break; } } return $required; }); return $validator; } }