2016-05-10 39 views
5

我在我的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

回答

0

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

1

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 /管理

1

在Laravel 5.4,使用下面的

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

網址只是格式到請求地址的整個路徑,你可以添加你想要的任何東西。