Уведомление Laravel 5.7 -›строка, нет возможности экранировать html, но она работала в 5.5

У меня есть такое же уведомление о коде в 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.


person Shiro    schedule 14.01.2019    source источник


Ответы (2)


Согласно @driesvints

Вам не нужно безDoubleEncoding в 5.7, поэтому вы можете удалить это.

Как видите, строки в шаблоне экранируются:

framework/src/Illuminate/Notifications/resources/views/email.blade.php

Строка 15 в d818fd1

{{ $line }} Таким образом, вам нужно указать, что в строке есть HTML. Попробуй это:

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

Это решение. Спасибо!

person Shiro    schedule 14.01.2019

При обновлении с 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.

person usrNotFound    schedule 14.01.2019
comment
Я добавил Blade::withoutDoubleEncoding(); , а return (new MailMessage)->line('Due Date: <strong>123</strong>'); все еще не может получить полужирный шрифт. Вы можете проверить? - person Shiro; 14.01.2019