Skip to content

Commit b7eb7aa

Browse files
committed
Improve getRouteKey logic
1 parent aa8b723 commit b7eb7aa

File tree

1 file changed

+28
-9
lines changed

1 file changed

+28
-9
lines changed

src/LocalizedUrlGenerator.php

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace CodeZero\LocalizedRoutes;
44

5-
use Illuminate\Database\Eloquent\Model;
5+
use Illuminate\Contracts\Routing\UrlRoutable;
66
use Illuminate\Support\Collection;
77
use Illuminate\Support\Facades\App;
88
use Illuminate\Support\Facades\Config;
@@ -331,6 +331,12 @@ protected function prepareParameters($locale, $parameters)
331331
$parameters = $parameters($locale);
332332
}
333333

334+
foreach ($parameters as $key => $parameter) {
335+
if ($parameter instanceof UrlRoutable) {
336+
$parameters[$key] = $this->getLocalizedRouteKey($parameter, $locale);
337+
}
338+
}
339+
334340
return $parameters;
335341
}
336342

@@ -350,17 +356,30 @@ protected function replaceParameters($locale, $uri, array $parameters)
350356

351357
foreach ($paramKeys as $index => $key) {
352358
$value = $parameters[$key] ?? $parameters[$index];
353-
354-
if ($value instanceof Model) {
355-
$originalLocale = App::getLocale();
356-
App::setLocale($locale);
357-
$value = $value->getRouteKey();
358-
App::setLocale($originalLocale);
359-
}
360-
361359
$uri = str_replace("{{$key}}", $value, $uri);
362360
}
363361

364362
return $uri;
365363
}
364+
365+
/**
366+
* Get the localized route key from a model.
367+
*
368+
* @param \Illuminate\Contracts\Routing\UrlRoutable $model
369+
* @param string $locale
370+
*
371+
* @return string
372+
*/
373+
protected function getLocalizedRouteKey(UrlRoutable $model, $locale)
374+
{
375+
$originalLocale = App::getLocale();
376+
377+
App::setLocale($locale);
378+
379+
$routeKey = $model->getRouteKey();
380+
381+
App::setLocale($originalLocale);
382+
383+
return $routeKey;
384+
}
366385
}

0 commit comments

Comments
 (0)