Laravel 5.2-如何给现有的url()辅助函数添加前缀?

问题描述:

我在我的web应用程序中使用了本地化功能。但我想添加App::getLocale()url()。因此,例如,在我看来,当我添加<a href="{{url('/admin')}}">link</a>我想在HTML中显示URL为http://localhost/mysite/en/admin。我该怎么做?Laravel 5.2-如何给现有的url()辅助函数添加前缀?

我可以定制内置的URL辅助功能吗?

+1

我现在有同样的问题,你能告诉我你是如何解决这个问题的吗? – Tim

+1

@Tim,我找到了解决方案。检查我的答案。 – Someone

enter image description here我找到了解决方案。在laravel 5.3中测试它。有效!可能对其他人有用。 所以这是值得分享:

输入vendor\laravel\framework\src\Illuminate\Foundation\helpers.php和修改这样的代码:

只需添加your prefix$path之前变量

+2

切勿编辑供应商文件夹中的类。该文件夹完全由作曲家管理。当您运行'composer update'时,其中的任何修改都将被删除。 –

+0

亚历山大是对的,**不这样做**。切勿编辑供应商文件夹内的任何内容。正如你从截图中看到的那样,函数url()只有在没有被定义的情况下才被定义。您可以在位于项目文件夹中的帮助程序文件中定义自定义的'url()'函数,然后将其放入'composer.lock'的'autoload'部分。 – Reddalo

url()方法不允许这样做,因为它会为您提供的精确值生成URL作为第一个参数。但是,如果您切换到route()方法并为您的路线定义了前缀,则可以实现您所需的功能。

// define a route group with a prefix in routes.php 
Route::group(['prefix' => App::getLocale()], function() { 
    Route::get('admin', ['as' => 'admin', 'uses' => '[email protected]']); 
}); 

// generate prefixed URL 
echo route('admin'); 

如果你的语言环境是EN,那么上面的线应该给你一个网址像/EN /管理

在Laravel 5.4,使用下面的

{{ url('Your_Prefix', 'login') }} 

网址只是格式到请求地址的整个路径,你可以添加你想要的任何东西。