You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Blade中实现textarea的换行输出?

问题出在这两个关键错误!

你现在的代码犯了两个针对<textarea>的典型错误,导致换行失效还出现转义符:

1. 错误使用了nl2br()函数

<textarea>是原生表单控件,它只识别原生换行符\n,而nl2br()的作用是把\n转换成HTML的<br>标签——但<textarea>根本不会渲染HTML标签,只会把<br>当作普通文本显示,这直接破坏了你的换行逻辑。

2. 多余的e()+{!!}组合导致转义混乱

Laravel的Form::textarea方法本身就会自动对textarea的内容做HTML转义(防止XSS风险),你自己再套一层e()会造成双重转义,加上{!! !!}关闭Blade的自动转义,反而让原本的\n被转成了可见的\\n,最终显示成带转义符的原始字符串。


正确的解决方案

情况1:数据库里存储的是原生\n换行

直接把原始字符串传给Form::textarea就行,它会自动处理转义并保留换行:

{!! Form::textarea('product_id', $order->product_id, ['placeholder'=>'Enter product id', 'class'=>'form-control input-lg', 'rows'=>'3','required']) !!}

情况2:数据库里存储的是转义后的\\n(比如存储时被转义过)

如果你的数据库中实际存的是带反斜杠的\\n(不是原生换行),需要先把转义的换行还原成原生\n:

{!! Form::textarea('product_id', str_replace('\\n', "\n", $order->product_id), ['placeholder'=>'Enter product id', 'class'=>'form-control input-lg', 'rows'=>'3','required']) !!}

这样修改后,你的多行文本就能在<textarea>里正常换行显示了~

内容的提问来源于stack exchange,提问作者an4rei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:30:29