public function routeIsUnique($attribute, $value, $parameters, Validator $validator) { $validator->setFallbackMessages(array_merge($validator->getFallbackMessages(), ['unique_route' => 'this route already exists'])); $validates = false; $value = Handle::normalizeUrl($value); try { $routes = Route::getRoutes(); $request = Request::create($value); $routes->match($request); // route exists } catch (\Exception $e) { // route doesn't exist $validates = true; } return $validates; }
/** * Add the extensions to a validator instance. * * @param \Illuminate\Validation\Validator $validator * @return void */ protected function addExtensions(Validator $validator) { $validator->addExtensions($this->extensions); // Next, we will add the implicit extensions, which are similar to the required // and accepted rule in that they are run even if the attributes is not in a // array of data that is given to a validator instances via instantiation. $implicit = $this->implicitExtensions; $validator->addImplicitExtensions($implicit); $validator->addReplacers($this->replacers); $validator->setFallbackMessages($this->fallbackMessages); }