本地化不适用于Laravel中的所有URL

问题描述 投票:2回答:1

我已经在我的Laravel项目中应用了本地化。但是某些URL的本地化出现错误。

我的头部有两种语言的按钮enbn。当用户单击任何一种语言按钮时,整个网站将被转换为该语言。

按钮

<li><a href="{{ 'locale/en' }}">English</a></li>
<li><a href="{{ 'locale/bn' }}">Bangla</a></li>

。env

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:Dm34MLg8AbQk4ADyIG9cYPaIwYbQgrUgrN7Ani/x+JA=
APP_DEBUG=true
APP_URL=http://localhost:90/office/sencare/

web.php

Route::get('/doctor', 'homeController@doctor'); //route A
Route::get('/doctor/{data}', 'homeController@doctor_detail'); //route B
Route::get('/technology', 'homeController@technology');//route A
Route::get('/technology/{data}', 'homeController@technology_detail'); //route B

Route::group(['prefix' => 'admin'], function () {
    Voyager::routes();
});

// ================LOCALIZATION=============
Route::get('locale/{locale}',function ($locale){
    Session::put('locale',$locale);
    return redirect()->back();
});
// ================LOCALIZATION=============

/*=============START CUSTOMIZE ERROR PAGE===========*/
Route::any('{catchall}', function() {  
  return App::call('App\Http\Controllers\errorController@error');

})->where('catchall', '.*');
/*=============END CUSTOMIZE ERROR PAGE===========*/

本地化中间人

public function handle($request, Closure $next)
    {
        if(\Session::get('locale')){

            \App::setLocale(\Session::get('locale'));

        }

        return $next($request);
    }

因此,当用户访问A下的页面时,请输入路由,然后单击任何语言按钮以转换页面,该页面可以正常工作并进行转换。

但是,当用户访问B下的页面时,键入路由并单击任何语言按钮以转换页面,然后在自定义错误路由下得到一个错误页面。

错误消息

找不到页面请求的网址不正确。

[另一点是,当我单击A下的语言按钮时,输入路由页面的网址保持不变。但是对于B,请在点击语言按钮后输入路由页面,网址已更改。例如:

http://localhost:90/Office/sencare/doctor/locale/en

locale/en/不适用于任何其他URL。

如何解决这个问题?

有人帮忙吗?预先感谢。

php laravel laravel-routing laravel-5.8 laravel-localization
1个回答
0
投票

从您发布的HTML代码中,我可以看到您的语言按钮使用的是相对网址路径。这意味着路径不是以正斜杠开头。

相对路径将URL附加到当前页面URL。例如,如果http://localhost:90/Office/sencare/doctor/页面单击Bangla链接,它们将被带到http://localhost:90/Office/sencare/doctor/locale/bn

而不是为URL使用相对路径,您应该通过在它们的前面添加正斜杠来将它们更改为绝对路径。

<li><a href="{{ '/locale/en' }}">English</a></li>
<li><a href="{{ '/locale/bn' }}">Bangla</a></li>
© www.soinside.com 2019 - 2024. All rights reserved.