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
辅助功能吗?
我找到了解决方案。在laravel 5.3中测试它。有效!可能对其他人有用。 所以这是值得分享:
输入vendor\laravel\framework\src\Illuminate\Foundation\helpers.php
和修改这样的代码:
只需添加your prefix
$path
之前变量
切勿编辑供应商文件夹中的类。该文件夹完全由作曲家管理。当您运行'composer update'时,其中的任何修改都将被删除。 –
亚历山大是对的,**不这样做**。切勿编辑供应商文件夹内的任何内容。正如你从截图中看到的那样,函数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') }}
网址只是格式到请求地址的整个路径,你可以添加你想要的任何东西。
我现在有同样的问题,你能告诉我你是如何解决这个问题的吗? – Tim
@Tim,我找到了解决方案。检查我的答案。 – Someone