0

我在 Laravel 5.5 和 5.7 中有相同的代码通知,对于 Laravel 5.5,我可以<strong>在 ->line 中使用,但在 5.7 中它会转义它。

在我的通知刀片视图文件中,我设置了 {{ ]} 或 {!! !!},我仍然无法在我的电子邮件中显示 html。在 5.5 中,我不需要转义它仍然可以工作。

\\this is when I not escape
&lt;strong&gt;2019-01-13 15:41&lt;/strong&gt;



 \\this is when I escape
 <strong>2019-01-13 15:37</strong>

我想要的是如下所示的粗体显示。

2019-01-13 15:37

这两种方法也显示了标签,它不会加粗文本。相同的编码工作在 5.5 但不是 Laravel 版本 5.7.20

4

2 回答 2

3

根据@driesvints

在 5.7 中您不需要 withoutDoubleEncoding,因此您可以删除它。

如您所见,模板中的行被转义:

框架/src/Illuminate/Notifications/resources/views/email.blade.php

d818fd1 中的第 15 行

{{ $line }} 所以你需要指出该行中包含 HTML。试试这个:

->line(new HtmlString('Due Date: ' . Carbon::parse($this->info->created_at)->format('Ymd H:i').' '));

这是解决方案。谢谢!

于 2019-01-14T14:01:24.427 回答
2

从 5.5 到 5.6 升级,去掉了 Laravel 刀片双编码。如果您想保持之前的防止双重编码的行为,您可以使用如下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();
   }
}

你可以在Laravel 文档中阅读更多关于它的信息。

于 2019-01-14T01:45:50.580 回答