blade 语句中的额外空格。 Laravel 8

Extra whitespaces in blade statements. Laravel 8

问题是,它不仅仅是一个变量,而是带有 @if@isset@foreach 指令的语句。我无法在没有语法错误的情况下删除空格。所有这些空格都显示在输入字段中。

我在描述字段中这样做了:

  1. 检查 old('description') 是否存在。

  2. 有则显示

  3. 如果不存在,则检查变量 $post 是否存在(我将此表单用于存储和更新方法)。

  4. 有则显示

  5. 如果不是,该字段将为空。

     <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>

不再有多余的空格。