如何根据 Laravel 中发送到 blade 的数据显示 div

How to show div based on data sent to blade in Laravel

我有两个 div(inputbaranginputkategori)。当其中没有数据时,我想让 div 之一消失。比如$produk的值不为null时,inputbarang的div会出现,inputkategori的div会隐藏.然而,如果 $produk 为空,则 inputbarang 的 div 将被隐藏,而 inputkategori 的 div 将出现。我这样试试当$produk为null时,inputbarang的div仍然出现,inputkategori的div不出现

Blade.php:

@if($produk !== null)
<div class="form-group row " id="inputbarang" >
    <label class="col-form-label col-lg-3 col-sm-12">Barang</label>
    <div class="col-lg-4 col-md-9 col-sm-12">
        <select class="form-control m-select2" width="500px" id="kt_select2_1" name="id_product[]" multiple="multiple">
        @foreach($productall as $p)
        @if(in_array($p->id, $productbyIds))
        <option value="{{ $p->id }}" selected="true">{{ $p->product }}</option>
        @else
        <option value="{{ $p->id }}">{{ $p->product }}</option>
        @endif 
        @endforeach
        </select>
    </div>
</div>

@else
<div class="form-group row" id="inputkategori" >
    <label class="col-form-label col-lg-3 col-sm-12">Kategori</label>
    <div class="col-lg-9 col-md-9 col-sm-12">
        <select class="form-control m-select2" width="500px" id="kt_select2_3" name="id_kategori[]" multiple="multiple">
        @foreach($kategoriall as $k)
        @if(in_array($k->id, $kategoribyIds))
        <option value="{{ $k->id }}" selected="true">{{ $k->kategori }}</option>
        @else
        <option value="{{ $k->id }}">{{ $k->kategori }}</option>
        @endif
        @endforeach
        </select>
    </div>
</div>
@endif

控制器:

$produk = Produk::where('m_product.delete', 0)
            ->join('tb_promo_detail', 'tb_promo_detail.id_product','=','m_product.id')
            ->select('m_product.id', 'm_product.product')
            ->where('tb_promo_detail.id_promo',$id)
            ->get();

如有不妥请指正..万分感谢!

由于您正在从控制器向您的 blade 发送 collection,因此您需要检查 collection 是否为空。仅仅检查它是否为 null 或空数组不会给你正确的条件效果。

所以使用:

@if($produk->first())

或者您也可以使用

@if(!$produk->isEmpty())