blade 语句中的额外空格。 Laravel 8
Extra whitespaces in blade statements. Laravel 8
问题是,它不仅仅是一个变量,而是带有 @if
、@isset
和 @foreach
指令的语句。我无法在没有语法错误的情况下删除空格。所有这些空格都显示在输入字段中。
我在描述字段中这样做了:
检查 old('description')
是否存在。
有则显示
如果不存在,则检查变量 $post
是否存在(我将此表单用于存储和更新方法)。
有则显示
如果不是,该字段将为空。
<div class="form-group">
<label for="description">Description</label>
<textarea id="description" name="description" rows="3">@if(old('description')){{ old('description') }}@else @isset ($post){{$post->description}}@endisset @endif</textarea>
<div class="form-group">
<label for="tags">Tags</label>
<input type="text" name="tags" id="tags"
value="@isset ($post, $tags)@foreach($post->tagged as $tagged){{$tagged->tag_name}},@endforeach @endisset">
我尝试了包 hedronium/spaceless-blade,但它不适用于输入值。
>@if
和 "@isset
将被解析为字符串,因为 @
只有在不与除 space、新行或标签。你可以在 {{}}
.
里面没有 @ 的情况下做
我有一个更好的解决方案 。
更改您的长代码
@if(old('description')){{ old('description') }}@else @isset ($post){{$post->description}}@endisset @endif
至
{{old('description') ?? isset($post)?$post->description:''}}
并改变
@isset ($post, $tags)@foreach($post->tagged as $tagged){{$tagged->tag_name}},@endforeach @endisset
至
{{isset($post) ? implode(', ', $post->tagged->pluck('tag_name')->toArray() )):''}}
所以完整代码:
<div class="form-group">
<label for="description">Description</label>
<textarea id="description" name="description" rows="3">{{old('description') ?? isset($post)?$post->description:''}}</textarea>
</div>
<div class="form-group">
<label for="tags">Tags</label>
<input type="text" name="tags" id="tags"
value="{{isset($post) ? implode(', ', $post->tagged->pluck('tag_name')->toArray() )):''}}">
</div>
我使用指令 @php
.
解决了我的问题
<textarea id="description" name="description" rows="3">@php
if(old('description')) {
echo old('description');
} elseif (isset($post)){
echo $post->description;
}
@endphp</textarea>
不再有多余的空格。
问题是,它不仅仅是一个变量,而是带有 @if
、@isset
和 @foreach
指令的语句。我无法在没有语法错误的情况下删除空格。所有这些空格都显示在输入字段中。
我在描述字段中这样做了:
检查
old('description')
是否存在。有则显示
如果不存在,则检查变量
$post
是否存在(我将此表单用于存储和更新方法)。有则显示
如果不是,该字段将为空。
<div class="form-group"> <label for="description">Description</label> <textarea id="description" name="description" rows="3">@if(old('description')){{ old('description') }}@else @isset ($post){{$post->description}}@endisset @endif</textarea>
<div class="form-group"> <label for="tags">Tags</label> <input type="text" name="tags" id="tags" value="@isset ($post, $tags)@foreach($post->tagged as $tagged){{$tagged->tag_name}},@endforeach @endisset">
我尝试了包 hedronium/spaceless-blade,但它不适用于输入值。
>@if
和 "@isset
将被解析为字符串,因为 @
只有在不与除 space、新行或标签。你可以在 {{}}
.
我有一个更好的解决方案
更改您的长代码
@if(old('description')){{ old('description') }}@else @isset ($post){{$post->description}}@endisset @endif
至
{{old('description') ?? isset($post)?$post->description:''}}
并改变
@isset ($post, $tags)@foreach($post->tagged as $tagged){{$tagged->tag_name}},@endforeach @endisset
至
{{isset($post) ? implode(', ', $post->tagged->pluck('tag_name')->toArray() )):''}}
所以完整代码:
<div class="form-group">
<label for="description">Description</label>
<textarea id="description" name="description" rows="3">{{old('description') ?? isset($post)?$post->description:''}}</textarea>
</div>
<div class="form-group">
<label for="tags">Tags</label>
<input type="text" name="tags" id="tags"
value="{{isset($post) ? implode(', ', $post->tagged->pluck('tag_name')->toArray() )):''}}">
</div>
我使用指令 @php
.
<textarea id="description" name="description" rows="3">@php
if(old('description')) {
echo old('description');
} elseif (isset($post)){
echo $post->description;
}
@endphp</textarea>
不再有多余的空格。