在Laravel 5.3中覆盖Laravel Vendor Method

时间:2017-03-31 07:58:14

标签: php laravel laravel-5.3

我想为现有的laravel项目添加多语言功能。目前我有以下路线:

$user_route = function() {
  ....
};

Route::group([
  'prefix'     => ''
], $user_route 
);

Route::group([
  'prefix'     => '{language}', 
  'middleware' => 'set.lang'
], $user_route 
);

每个锚使用来自Laravel的route()助手。因为我有使用'语言的路线'前缀,我需要从$language传递route()。有很多route(),我不认为更新到route('name', ['language' => \App::getLocale()])的每条路线都是不错的选择。该项目已经有Helper类,我计划用我的自定义方法覆盖route()方法Illuminate\Routing\UrlGenerator。这就是我的尝试:

的functions.php

use Illuminate\Routing\UrlGenerator as Url;
....

function route($name, $parameters = [], $absolute = true)
{
  $parameters = array_add($parameters, 'language', \App::getLocale());

  $url = new Url();

  return $url->route($name, $parameters, $absolute);
}

显然会返回错误:

FatalErrorException in Functions.php line 158:

Cannot redeclare route() (previously declared in
C:\...\vendor\laravel\framework\src\Illuminate\Foundation\helpers.php:693)

我读到Service Container,但就我的理解而言,仅用于管理类依赖项和执行依赖项注入。如何正确处理?非常感谢你的帮助。

0 个答案:

没有答案