如何解决如何从文本区域的@foreach循环中呈现html
使用Laravel 8 livewire,我需要在文本区域的每一行上绘制一个名称列表($ list)。 我这样做
<div class=" border border-red-800 rounded-lg mt-8 p-4 w-full bg-green-300">
<form>
<textarea rows="10" class="w-full bg-yellow-100">
@foreach ($list as $maltproducer)
{{$maltproducer->name}}
@endforeach
</textarea>
<x-input.group label="Producer" for='name' :error="$errors->first('name')"
class="flex flex-col w-full p-2 border border-jbrown-peachpuf bg-jbrown-darker rounded-md ">
<x-input.text wire:model="name" type="text" class="" name="name" id="name" value="" />
</x-input.group>
<button wire:click.prevent="store()" class="bg-red-400 px-2 py-1 border rounded-lg mt-2">Add this
producer</button>
</form>
</div>
名称每行显示一个,但不在行首。为了使它们位于行的开头,我必须将我的源代码移至该行的开头,如下所示。
@foreach ($list as $maltproducer)
{{$maltproducer->name}}
@endforeach
这是不可接受的,因为即使没有我意识到,代码编辑器可能会用不同的格式设置文件。
我尝试了诸如
@foreach ($list as $maltproducer)
<p>{{$maltproducer->name}}</p>
@endforeach
,但在这种情况下,会显示<p>
标记,但不会解释。
我也尝试过{!!$maltproducer->name!!}
,{!!<p>$maltproducer->name</p>!!}
等,但我始终无法取得良好的结果,即在行首每行只有一个名字。
解决方案是什么?
解决方法
textarea将其标记之间的所有内容呈现为值-其中包括空格,制表符和换行符。因此,您要打印每一行,而在所需的实际值之前或之后没有任何空格。为了最好地做到这一点,就是在您的代码中打印不带任何“漂亮”格式的输出。
我们可以通过拔出要打印的集合中的字段,然后使用换行符作为粘合点来实现该目的。在PHP中,看起来像
implode("\n",$list->pluck('name'))
然后只需在文本区域之间直接打印即可,而无需任何间距或换行符。
<textarea rows="10" class="w-full bg-yellow-100">{{ implode("\n",$list->pluck('name')) }}</textarea>
直接在集合上使用implode()
方法,甚至可以获得更多Laravel式的信息,
<textarea rows="10" class="w-full bg-yellow-100">{{ $list->implode('name',"\n") }}</textarea>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。