我正在使用[ 0 ][ 1 ][ 2 ]
[ -----3------]
[----2---]
[-1-]
[]
,我正在尝试发送一封Laravel 5.3
的电子邮件。所以我使用了nl2br()
(email blade file
)中新增的默认Laravel 5.3
但它没有显示换行符。只有这个:
vendor/notifications/email.blade.php
我这样做了:
sttesttesttesttesttesttesttesttesttesttesttesttest<br /> <br /> <br /> <br /> testtesttesttesttesttesttesttesttesttesttesttesttesttesttest
我做错了什么?
此:
<!-- Outro -->
@foreach ($outroLines as $line)
<p style="{{ $style['``'] }}">
{{ nl2br($line) }}
</p>
@endforeach
无效。
答案 0 :(得分:1)
Laravel使用{{}}
自动转义字符串对于laravel 4+使用{{{ nl2br($line) }}}
对于laravel 5+使用{!! nl2br($line) !!}
如果我在版本控制上出错了,请纠正我。
答案 1 :(得分:1)
对于 Laravel 4 用户:
{{ nl2br(e($message)) }}
e($x)
相当于{{{ $x }}}
。
Laravel 5 用户:
{!! nl2br(e($message)) !!}
e($x)
相当于{{ $x }}
。
答案 2 :(得分:0)
我知道这有点晚了,但对于遇到同样问题的每个人。 如果您使用通知邮件,新行将无效(&#34; \ n&#34;,&#34; \ r&#34;,&#34; \ r \ n&#34;)。
这是因为Laravel(我可以确认5.3
和5.4
)从行中剥离这些
供应商\ laravel \框架\ SRC \照亮\通知\消息\ SimpleMessage.php
protected function formatLine($line)
{
if (is_array($line)) {
return implode(' ', array_map('trim', $line));
}
return trim(implode(' ', array_map('trim', preg_split('/\\r\\n|\\r|\\n/', $line))));
}
我是如何通过用实际的html新行<br>
替换新行来解决这个问题的。
有更好的方法可以做到这一点我确定,但重要的是不要忽视formatLine函数。
public function toMail($notifiable) {
//Get your mail data
$mail = new Email(2);
$emailLine = $mail->getArray();
return (new MailMessage)
->line(str_replace(array("\\r\\n", "\\n", "\\r","\r\n", "\n", "\r"), "<br>", $emailLine))
}