我在我的web應用程序中使用了本地化功能。但我想添加App::getLocale()
到url()
。因此,例如,在我看來,當我添加<a href="{{url('/admin')}}">link</a>
我想在HTML中顯示URL爲http://localhost/mysite/en/admin
。我該怎麼做?Laravel 5.2-如何給現有的url()輔助函數添加前綴?
我可以定製內置的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