【问题标题】:Laravel localization throws htmlspecialchars() errorLaravel 本地化抛出 htmlspecialchars() 错误
【发布时间】:2021-11-16 16:11:33
【问题描述】:

当我尝试使用本地化并检索翻译字符串时,Laravel 出于某种原因抛出:

从控制器到视图(产品索引页面),我传递了$products 变量。在该页面上,我使用翻译字符串 {{ __('Products') }} 并得到 htmlspecialchars() 错误。据我了解,翻译字符串出于某种原因认为我将$products 变量传递给{{ __('Products') }} 翻译字符串,因为如果我将翻译字符串更改为(例如){{ __('Products page') }},我不会再收到此错误。谁能解释一下,为什么会出现这个错误?

控制器

发生错误时的代码

不再发生错误时的代码

更新

修复了在 lang 文件夹中添加 en.json 文件时出现的问题。

【问题讨论】:

    标签: php laravel components laravel-8 laravel-blade


    【解决方案1】:

    事实上,我不是那样翻译的。事实上,我创建了一个中间件,并创建了一条公平的路线。让我们以法语和英语为例。让我们创建一个中间件位置

    php artisan make:middleware Localisation
    

    然后填写中间件

    <?php
    
    namespace App\Http\Middleware;
    
    use Closure;
    
    use Illuminate\Http\Request;
    
    
    class Localization
    {
        public function handle(Request $request, Closure $next)
        {
            if(\Session::has('locale'))
            {
                \App::setlocale(\Session::get('locale'));
            }
     
            return $next($request);
        }
    }
    

    【讨论】:

    • 很抱歉我发布了答案但没有明确说明,即使它不完整
    【解决方案2】:
    protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\Localization::class,
        ],
    

    您将这个创建的中间件添加到列表中,然后转到 web.php 路由文件并添加

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

    et ensuite vous pouvez récupérer la session de cette facon

    <a href="{{route('traduction',['locale'=>'en'])}}" class="menu-link d-flex px-5 active"> 
    <a href="{{route('traduction',['locale'=>'fr'])}}" class="menu-link d-flex px-5 active">
    

    如果您想根据会话显示图像

    <a href="#" class="menu-link px-5">
                                <span class="menu-title position-relative">Langue {{ Session::get('locale') }}
                                 @if (Session::get('locale') == "fr")
                                <span class="fs-8 rounded bg-light px-3 py-2 position-absolute translate-middle-y top-50 end-0">Francais 
                                <img class="w-15px h-15px rounded-1 ms-2" src="assets/media/flags/france.svg" alt="" /></span></span>
                                @else
                                <span class="fs-8 rounded bg-light px-3 py-2 position-absolute translate-middle-y top-50 end-0">English 
                                <img class="w-15px h-15px rounded-1 ms-2" src="assets/media/flags/united-states.svg" alt="" /></span></span>
                                @endif
                            </a>
    

    抱歉,您必须同时使用这两个答案,因为它们是互补的

    【讨论】:

      猜你喜欢
      • 2018-03-24
      • 2017-11-06
      • 1970-01-01
      • 2017-10-02
      • 1970-01-01
      • 2017-04-29
      • 1970-01-01
      • 2013-07-31
      • 2015-05-25
      相关资源
      最近更新 更多