我为我的 laravel 应用程序添加了本地化。我在路线中定义语言。
Route::group(['prefix' => '{language}/tender', 'middleware' => ['permission:tender-page']], function () {
Route::get('/', 'TenderController@index')->name('tender');
Route::get('/add', 'TenderController@add')->name('tender_add');
Route::get('/{id}', 'TenderController@detail')->name('tender_detail');
});
我尝试通过这种方式更改语言
<li class="nav-item">
<a href="{{ route(Route::currentRouteName(), 'ru') }}" class="nav-link">RU</a>
</li>
<li class="nav-item">
<a href="{{ route(Route::currentRouteName(), 'tr') }}" class="nav-link">TR</a>
</li>
但是如果我使用这种方式,这种路由Route::get('/{id}', 'TenderController@detail')->name('tender_detail');
出错。
如何实现语言转换?
您需要再次传递{id}
参数。
{{ route(Route::currentRouteName(), ['language' => 'ru', 'id' => $tender_id]) }}
您需要获取当前路由参数并覆盖{language}
。为此,可以使用Route::current()->parameters()
获取当前路由的参数数组,然后使用array_merge
覆盖语言。
{{ route(Route::currentRouteName(), array_merge(Route::current()->parameters(), ['language' => 'ru']) ) }}