我真的想不出一个优雅的解决方案来解决这个问题,所以这里是:
这是 app.blade.php 中用于语言切换器的刀片代码:
<language-switcher
locale="{{ app()->getLocale() }}"
link-en="{{ route(Route::currentRouteName(), 'en') }}"
link-bg="{{ route(Route::currentRouteName(), 'bg') }}"
></language-switcher>
这是我的一些路线
Route::redirect('/', '/en');
Route::get('email/verify', 'Auth\VerificationController@show')->name('verification.notice');
Route::get('email/verify/{id}/{hash}', 'Auth\VerificationController@verify')->name('verification.verify');
Route::get('email/resend', 'Auth\VerificationController@resend')->name('verification.resend');
Route::group([
"prefix" => '{language}',
'where' => ['language' => '(en||bg)'],
], function () {
//Auth routes
Auth::routes();
//Returns to home
Route::get('/', 'HomeController@index')->name('home');
//Handles the faq routes
Route::resource('faq', 'FaqController');
});
Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
Route::post('password/reset', 'Auth\ResetPasswordController@reset')->name('password.update');
});
它适用于不需要任何获取参数的页面,例如:登录/注册/主页,但是如果我使用需要像 faq.edit 这样需要 {id} 参数的页面 - 语言切换器将抛出错误,因为我没有向它传递 {id} 参数。
我能想到的唯一解决方案是在子刀片视图中添加语言切换器,然后从那里传递所需的参数,但这意味着我必须将语言切换器添加到每个子视图,而不是只在父视图中添加一次。
隔江千里