使用{{}}时使用Laravel 5.6 htmlspecialchars

时间:2018-08-07 08:26:05

标签: php mysql laravel laravel-blade

我最近将一个项目从Laravel 5.5升级到5.6,并且我有一些编码字符(如')以前没有。如果我再次降级到Laravel 5.5,并且一切保持不变(只需降级几个软件包以使其兼容),字符将按预期显示。

我检查了文档,并在5.5和5.6中提到了{{}}和{!! !!}:https://laravel.com/docs/5.6/blade#displaying-data

数据库连接已且在升级之前已设置为使用utf8mb4作为字符集,并使用utf8mb4_unicode_ci作为排序规则。

您知道为什么在Laravel 5.6中会发生这种情况吗?一种(快速)解决方案是将{{}}替换为{!! !!}或{{html_entity_decode($ text,ENT_QUOTES)}},但我觉得可以做一些更一般的事情。

1 个答案:

答案 0 :(得分:5)

在此处阅读升级指南:https://laravel.com/docs/5.6/upgrade

问题的答案在Blade > HTML Entity Encoding中。

在您的app/Providers/AppServiceProvider.php中,将此代码Blade::withoutDoubleEncoding();添加到引导功能中。这是整个文件:

<?php

namespace App\Providers;

use Illuminate\Support\Facades\Blade;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Blade::withoutDoubleEncoding();
    }
}