【问题标题】:How to insert a line break in a markdown Notification如何在降价通知中插入换行符
【发布时间】:2018-03-17 18:10:40
【问题描述】:

我正在使用 Laravel 的通知系统在用户注册时发送欢迎电子邮件。一切都很好,除了我一生无法弄清楚如何在问候语中插入换行符。

这是我的代码:

namespace App\Notifications\Auth;

use Illuminate\Notifications\Notification;
use Illuminate\Notifications\Messages\MailMessage;


class UserRegistered extends Notification
{

    public function via($notifiable)
    {
        return ['mail'];
    }

    public function toMail($notifiable)
    {
        return (new MailMessage)
            ->subject('Welcome to website!')
            ->greeting('Welcome '. $notifiable->name .'!')
            ->line('## Sub heading line')
            ->line('Paragraph line')
            ->markdown('mail.welcome');
    }
}

我想在->greeting('Welcome '. $notifiable->name .'!') 在欢迎词和名字之间打断一下。有谁知道我该怎么做?我已经尝试过降价文档中描述的双倍空格。我试过使用nl2br()。我试过了\n。我试过<br>。没有任何效果。

【问题讨论】:

  • 你推荐过这篇文章吗?
    stackoverflow.com/questions/26626256/…
  • 是的。试过了
  • @james.brndwgn 在双引号中使用
  • @shashi 我不确定您所说的“双引号”是什么意思,但我尝试过使用像->greeting('Welcome<br>'. $notifiable->name .'!') 这样的
    ,所做的只是打印出“Welcome
    name”
  • @james.brndwgn 它也可以工作

标签: php laravel laravel-5.4


【解决方案1】:

让它工作。原来是因为 Laravel 在使用 {{ }} 时转义 HTML 导致问题所在的降价。你必须通过使用{!! !!}:Using double curly brace in Laravel Collective来防止转义

对于那些感兴趣的人,我的问候线现在是->greeting('Welcome<br>'. $notifiable->name .'!')

在我的降价模板中是

{{-- Greeting --}}
@if (! empty($greeting))
# {!! $greeting !!}
@endif

【讨论】:

    【解决方案2】:

    首先,确保在邮件视图中将字符串呈现为 HTML:

    {!! $greeting !!}
    

    正如answer above 中所述,这使得在->greeting() 内部使用<br> 成为可能。

    不过,最好使用nl2br()。这会将\n 呈现为 HTML 邮件和纯文本邮件中的新行。 (否则<br>不会在明文邮件中呈现!)

    注意:nl2br() 仅适用于双引号中的字符串,而不适用于单引号!

    像这样在你的通知中使用它:

    public function toMail($notifiable)
    {
        $name = $notifiable->name;
        return (new MailMessage)
            ->subject('Welcome to website!')
            ->greeting(nl2br("Welcome\n$name!"))
            ->markdown('mail.welcome');
    }
    

    输出为 HTML:

    <p>Welcome<br> 
    Username!</p>
    

    输出为明文:

    Welcome
    Username!
    

    【讨论】:

      【解决方案3】:

      您可以执行以下操作:

      public function toMail($notifiable)
      {
          $name = $notifiable->name;
          return (new MailMessage)
              ->subject('Welcome to website!')
              ->greeting(new HtmlString("Welcome<br>$name!"))
              ->markdown('mail.welcome');
      }
      

      这不需要编辑任何模板。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-26
        • 1970-01-01
        • 2015-05-07
        • 2017-05-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多