] * @since [v3.0] * @return void */ public function boot() { // Email array validator Validator::extend('email_array', function ($attribute, $value, $parameters, $validator) { $value = str_replace(' ', '', $value); $array = explode(',', $value); foreach ($array as $email) { //loop over values $email_to_validate['alert_email'][]=$email; } $rules = array('alert_email.*'=>'email'); $messages = array( 'alert_email.*'=>trans('validation.email_array') ); $validator = Validator::make($email_to_validate, $rules, $messages); return $validator->passes(); }); // Unique only if undeleted // This works around the use case where multiple deleted items have the same unique attribute. // (I think this is a bug in Laravel's validator?) Validator::extend('unique_undeleted', function ($attribute, $value, $parameters, $validator) { if (count($parameters)) { $count = DB::table($parameters[0])->select('id')->where($attribute, '=', $value)->whereNull('deleted_at')->where('id', '!=', $parameters[1])->count(); return $count < 1; } }); // Yo dawg. I heard you like validators. // This validates the custom validator regex in custom fields. // We're just checking that the regex won't throw an exception, not // that it's actually correct for what the user intended. Validator::extend('valid_regex', function ($attribute, $value, $parameters, $validator) { // Make sure it's not just an ANY format if ($value!='') { // Check that the string starts with regex: if (strpos($value, 'regex:') === false) { return false; } $test_string = 'My hovercraft is full of eels'; // We have to stip out the regex: part here to check with preg_match $test_pattern = str_replace('regex:','', $value); try { preg_match($test_pattern, $test_string); return true; } catch (\Exception $e) { return false; } } return true; }); Validator::extend('letters', function ($attribute, $value, $parameters) { return preg_match('/\pL/', $value); }); Validator::extend('numbers', function ($attribute, $value, $parameters) { return preg_match('/\pN/', $value); }); Validator::extend('case_diff', function ($attribute, $value, $parameters) { return preg_match('/(\p{Ll}+.*\p{Lu})|(\p{Lu}+.*\p{Ll})/u', $value); }); Validator::extend('symbols', function ($attribute, $value, $parameters) { return preg_match('/\p{Z}|\p{S}|\p{P}/', $value); }); } /** * Register any application services. * * @return void */ public function register() { } }