【问题标题】:Hide every null variable from collection从集合中隐藏每个空变量
【发布时间】:2023-04-06 20:55:02
【问题描述】:

有时{{$vs->users2}}{{$vs->users3}} 将具有空值,如果两者或其中之一具有空值,我需要隐藏它们。我尝试使用 isset 或 isnull 但它们都不起作用。

@foreach ($vs as $vs)
    <div class="list-group-item" ng-hide="$vs->users == null">
            <h4>{{$vs->gps_vs}}</h4>
            <h5>Participantes: {{$vs->users4}} {{$vs->users3}} <a>VS</a> {{$vs->users1}} {{$vs->users2}}
            </h5>
            <a>Empieza: {{$vs->time_vs}} {{$vs->date_vs}} </a><a>Creado por: {{$vs->users4}}</a> 
        <div class="right2">
                {!! Form::open(['action' => ['MatchController@destroy', $vs->id], 'method' => 'POST']) !!}
                {{Form::hidden('_method', 'DELETE')}}
                {{Form::submit('Borrar evento', ['class'=>"btn btn-danger"])}}
            {!! Form::close() !!}
        </div>       
    </div>    
@endforeach

我的空值所在的表单

<select class="col-sm-2 form-control" name="users3">
        <option selected value=null>Nothing</option>
      @foreach($users3 as $users3)
        @if ($users3->id == 0 or $users3->id == Auth::user()->id);
        @else
        <option value="{{$users3->nick}}">{{$users3->nick}}</option> 

        @endif
      @endforeach

    </select>

【问题讨论】:

  • 看不到在你的代码中使用 isset 或 isnull 。
  • 你能分享一下当你执行“dd($vs->users2) 或 dd($vs->users3) 时的输出是什么吗?

标签: php laravel laravel-blade


【解决方案1】:

正如@quickSwap 所说的 {{@$vs->users2}} 或 {{$vs->users2 或 ''}} 它可以工作,但我忘了放入迁移

$table->string('users3')->nullable();

在数据库中启用空值。

【讨论】:

    【解决方案2】:

    参考@quickSwap 的回答 or 刀片函数在 Laravel 5.7 中被删除,有利于 PHP 内置的 ?? 空合并运算符。你可以使用

    {{$vs->users2 ?? ''}}
    

    【讨论】:

      【解决方案3】:

      你可以的,

      {{$vs->users2 or ''}}
      

      如果抛出错误,您可以通过@ error control operator 禁用它

      {{@$vs->users2}}
      

      您也可以对users3 使用相同的方法。

      编辑

      将你的 foreach 更改为 @foreach ($vs as $v)

      注意:循环时数组和值的名称不能相同。

      并将其中的每个 vs 替换为 v。

      编辑 2

      您的最终 html 应该如下所示

      @foreach ($vs as $v)
          <div class="list-group-item" ng-hide="$v->users == null">
                  <h4>{{$v->gps_vs}}</h4>
                  <h5>Participantes: {{$v->users4 or ''}} {{$v->users3 or ''}} <a>VS</a> {{$v->users1 or ''}} {{$v->users2 or ''}}
                  </h5>
                  <a>Empieza: {{$v->time_vs}} {{$v->date_vs}} </a><a>Creado por: {{$v->users4}}</a> 
              <div class="right2">
                      {!! Form::open(['action' => ['MatchController@destroy', $v->id], 'method' => 'POST']) !!}
                      {{Form::hidden('_method', 'DELETE')}}
                      {{Form::submit('Borrar evento', ['class'=>"btn btn-danger"])}}
                  {!! Form::close() !!}
              </div>       
          </div>    
      @endforeach
      

      【讨论】:

      • 当我尝试 {{$vs->users2 或 ''}} 我现在不知道为什么它显示“1”,如果我尝试 {{@$vs->users2}} 没有任何反应跨度>
      • $vs-&gt;users2 里面有什么?如果$vs-&gt;users2 包含值,它将显示,否则它不会显示任何内容,它将抑制未定义的错误
      • 有一个字符串值,它来自一个表单,您可以在其中选择一个名称或任何设置为 null
      • 完成了,但还是一样,如果有问题我上传了表格
      • 它保持相同的方式?那个数据还没来?还是其他问题?
      猜你喜欢
      • 1970-01-01
      • 2021-04-08
      • 2014-06-22
      • 2012-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-31
      相关资源
      最近更新 更多