Skip to content

Commit b0b84b9

Browse files
committed
cleanup error handling in generate
1 parent 9d4c5f3 commit b0b84b9

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

ChainRouter.php

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -201,12 +201,6 @@ public function generate($name, $parameters = array(), $absolute = false)
201201
{
202202
$debug = array();
203203

204-
if (is_object($name)) {
205-
$displayName = get_class($name);
206-
} else {
207-
$displayName = $name;
208-
}
209-
210204
foreach ($this->all() as $router) {
211205
// if $router does not implement ChainedRouterInterface and $name is not a string, continue
212206
if ($name && !$router instanceof ChainedRouterInterface) {
@@ -223,9 +217,7 @@ public function generate($name, $parameters = array(), $absolute = false)
223217
try {
224218
return $router->generate($name, $parameters, $absolute);
225219
} catch (RouteNotFoundException $e) {
226-
$hint = ($router instanceof VersatileGeneratorInterface)
227-
? $router->getRouteDebugMessage($name, $parameters)
228-
: "Route '$displayName' not found";
220+
$hint = $this->getErrorMessage($name, $router, $parameters);
229221
$debug[] = $hint;
230222
if ($this->logger) {
231223
$this->logger->info('Router '.get_class($router)." was unable to generate route. Reason: '$hint': ".$e->getMessage());
@@ -237,12 +229,28 @@ public function generate($name, $parameters = array(), $absolute = false)
237229
$debug = array_unique($debug);
238230
$info = implode(', ', $debug);
239231
} else {
240-
$info = "No route '$displayName' found";
232+
$info = $this->getErrorMessage($name);
241233
}
242234

243235
throw new RouteNotFoundException(sprintf('None of the chained routers were able to generate route: %s', $info));
244236
}
245237

238+
private function getErrorMessage($name, $router = null, $parameters = null)
239+
{
240+
if ($router instanceof VersatileGeneratorInterface) {
241+
$displayName = $router->getRouteDebugMessage($name, $parameters);
242+
} elseif (is_object($name)) {
243+
$displayName = method_exists($name, '__toString')
244+
? (string) $name
245+
: get_class($name)
246+
;
247+
} else {
248+
$displayName = (string) $name;
249+
}
250+
251+
return "Route '$displayName' not found";
252+
}
253+
246254
/**
247255
* {@inheritdoc}
248256
*/

0 commit comments

Comments
 (0)