/** * Validates a phone number. * * @param string $attribute * @param mixed $value * @param array $parameters * @param \Illuminate\Contracts\Validation\Validator $validator * @return bool * @throws \Propaganistas\LaravelPhone\Exceptions\InvalidParameterException * @throws \Propaganistas\LaravelPhone\Exceptions\NoValidCountryFoundException */ public function validatePhone($attribute, $value, array $parameters, Validator $validator) { $this->attribute = $attribute; $this->data = $validator->getData(); $this->parameters = array_map('strtoupper', $parameters); $this->determineCountries(); $this->determineTypes(); $this->checkLeftoverParameters(); $phoneUtil = PhoneNumberUtil::getInstance(); // Perform validation. foreach ($this->allowedCountries as $country) { try { // For default countries or country field, the following throws NumberParseException if // not parsed correctly against the supplied country. // For automatic detection: tries to discover the country code using from the number itself. $phoneProto = $phoneUtil->parse($value, $country); // For automatic detection, the number should have a country code. // Check if type is allowed. if ($phoneProto->hasCountryCode() && empty($this->allowedTypes) || in_array($phoneUtil->getNumberType($phoneProto), $this->allowedTypes)) { // Automatic detection: if ($country == 'ZZ') { // Validate if the international phone number is valid for its contained country. return $phoneUtil->isValidNumber($phoneProto); } // Force validation of number against the specified country. return $phoneUtil->isValidNumberForRegion($phoneProto, $country); } } catch (NumberParseException $e) { // Proceed to default validation error. } } return false; }
/** * Extend update validations. * * @param \Illuminate\Contracts\Validation\Validator $validator * * @return void */ protected function extendUpdate(ValidatorResolver $validator) { $name = Keyword::make($validator->getData()['name']); $validator->after(function (ValidatorResolver $v) use($name) { if ($this->isRoleNameGuest($name)) { $v->errors()->add('name', trans('orchestra/control::response.roles.reserved-word')); } }); }
/** * [filterValidatorData description] * @param Validator $validator [description] * @param [type] $keys [description] * @return [type] [description] */ private function filterValidatorData(Validator $validator, $keys) { $data = $validator->getData(); return $keys == '*' ? $data : array_keyfilter($data, $keys); }