From 134a60ef3d3cf07dfa8bc6e57cc7902055148d1d Mon Sep 17 00:00:00 2001 From: pilot911 Date: Sat, 10 Dec 2016 14:02:55 +0300 Subject: [PATCH 1/3] Update UrlGenerator.php How to use default named parameters (localize etc). ``` app("url")->setDefaultNamedParameters("locale", app()->getLocale()); ``` or ``` app("url")->setDefaultNamedParameters(["locale", app()->getLocale(), "userId" => app("auth")->user()->getKey()]); ``` Just create middleware ``` app = $app; } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, \Closure $next) { $this->app->url->setDefaultNamedParameters("locale", config('app.locale')); return $next($request); } } ``` In routes/web.php file ``` app('router')->pattern('locale', '(' . implode('|', config('app.locales')). ')'); app('router')->group(['domain' => '{locale}.telenok.com'], function () { app("router")->post("some-url", array("as" => "some-name", "uses" => "SomeClass@somemethod")); }); ``` Then instead of ``` ..... ``` you'll get ``` ..... ``` --- src/Illuminate/Routing/UrlGenerator.php | 47 +++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/src/Illuminate/Routing/UrlGenerator.php b/src/Illuminate/Routing/UrlGenerator.php index c71d8bd9c296..7944eb62fe93 100755 --- a/src/Illuminate/Routing/UrlGenerator.php +++ b/src/Illuminate/Routing/UrlGenerator.php @@ -108,6 +108,13 @@ class UrlGenerator implements UrlGeneratorContract '%25' => '%', ]; + /** + * Default named parameters. + * + * @var array + */ + protected $defaultNamedParameters = []; + /** * Create a new URL Generator instance. * @@ -297,6 +304,34 @@ protected function getScheme($secure) return $secure ? 'https://' : 'http://'; } + /** + * Get the default named parameters. + * + * @return array + */ + public function getDefaultNamedParameters() + { + return $this->defaultNamedParameters; + } + + /** + * Set the default named parameters. + * + * @param string|array $key + * @param mixed $value + * @return void + */ + public function setDefaultNamedParameters($key, $value = null) + { + if (is_array($key)) { + foreach ($key as $k => $v) { + $this->defaultNamedParameters[$k] = $v; + } + } else { + $this->defaultNamedParameters[$key] = $value; + } + } + /** * Force the schema for URLs. * @@ -403,8 +438,16 @@ protected function replaceRouteParameters($path, array &$parameters) */ protected function replaceNamedParameters($path, &$parameters) { - return preg_replace_callback('/\{(.*?)\??\}/', function ($m) use (&$parameters) { - return isset($parameters[$m[1]]) ? Arr::pull($parameters, $m[1]) : $m[0]; + $defaultNamedParameters = $this->getDefaultNamedParameters(); + + return preg_replace_callback('/\{(.*?)\??\}/', function ($m) use (&$parameters, $defaultNamedParameters) { + if (isset($parameters[$m[1]])) { + return Arr::pull($parameters, $m[1]); + } else if (isset($defaultNamedParameters[$m[1]])) { + return $defaultNamedParameters[$m[1]]; + } else { + return $m[0]; + } }, $path); } From 167e83b85b810f03c54f12684f6867c767cdc6b3 Mon Sep 17 00:00:00 2001 From: pilot911 Date: Sat, 10 Dec 2016 14:07:10 +0300 Subject: [PATCH 2/3] Update UrlGenerator.php --- src/Illuminate/Routing/UrlGenerator.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Illuminate/Routing/UrlGenerator.php b/src/Illuminate/Routing/UrlGenerator.php index 7944eb62fe93..2dcefad2f084 100755 --- a/src/Illuminate/Routing/UrlGenerator.php +++ b/src/Illuminate/Routing/UrlGenerator.php @@ -163,7 +163,7 @@ public function previous($fallback = false) if ($url) { return $url; - } elseif ($fallback) { + } else if ($fallback) { return $this->to($fallback); } else { return $this->to('/'); From f72ac7f5e4f2d77a403a0ba79ef9aa6a7c2326c1 Mon Sep 17 00:00:00 2001 From: pilot911 Date: Sat, 10 Dec 2016 14:26:21 +0300 Subject: [PATCH 3/3] Update UrlGenerator.php --- src/Illuminate/Routing/UrlGenerator.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Illuminate/Routing/UrlGenerator.php b/src/Illuminate/Routing/UrlGenerator.php index 2dcefad2f084..8dddedef19f5 100755 --- a/src/Illuminate/Routing/UrlGenerator.php +++ b/src/Illuminate/Routing/UrlGenerator.php @@ -163,7 +163,7 @@ public function previous($fallback = false) if ($url) { return $url; - } else if ($fallback) { + } elseif ($fallback) { return $this->to($fallback); } else { return $this->to('/'); @@ -443,7 +443,7 @@ protected function replaceNamedParameters($path, &$parameters) return preg_replace_callback('/\{(.*?)\??\}/', function ($m) use (&$parameters, $defaultNamedParameters) { if (isset($parameters[$m[1]])) { return Arr::pull($parameters, $m[1]); - } else if (isset($defaultNamedParameters[$m[1]])) { + } elseif (isset($defaultNamedParameters[$m[1]])) { return $defaultNamedParameters[$m[1]]; } else { return $m[0];