如何检查变量在laravel刀片中是否有数据

Use*_*r57 4 php laravel laravel-5

我想检查刀片中是否存在变量..为此,我使用了以下几行:

@if(is_null($products))
    <div class="alert alert-warning">
        <strong>Sorry!</strong> No Product Found.
    </div>                                      
@else

    @foreach($products as $product)
        //
    @endforeach
@endif
Run Code Online (Sandbox Code Playgroud)

问题是当$products刀片上有时,我可以在foreach循环内显示,但是当我得到空变量时。我无法显示消息,No Data Found而是只显示空白空间?检查刀片内部的变量有什么问题吗?

控制器代码:

public function productSearch(Request $request)
    {
        $name = $request->name; 
        $products = Product::where('name' , 'like', '%'.$name.'%')->get();
        return view('cart.product',compact('products'));
    }
Run Code Online (Sandbox Code Playgroud)

San*_*pta 7

我通常使用PHP count()

@if(count($products) < 1)
    <div class="alert alert-warning">
        <strong>Sorry!</strong> No Product Found.
    </div>                                      
@else
    @foreach($products as $product)
        //
    @endforeach
@endif
Run Code Online (Sandbox Code Playgroud)

您还可以使用PHP empty() 进行检查,例如:

 @if(!empty($products))
Run Code Online (Sandbox Code Playgroud)


Shr*_*hal 6

从 Laravel 5.7 开始,你还可以这样做:

@empty(!$products)
   <div class="alert alert-warning">
        <strong>Sorry!</strong> No Product Found.
   </div>
@endempty
Run Code Online (Sandbox Code Playgroud)


Mat*_*rre 5

正如您在文档中看到的:

@forelse ($users as $user)
    <li>{{ $user->name }}</li>
@empty
    <p>No users</p>
@endforelse
Run Code Online (Sandbox Code Playgroud)

此代码将允许您解析所有用户并显示他们的列表。如果$users变量为空,则显示一个段落

所以对你来说:

@forelse ($products as $product)
    //
@empty
    <div class="alert alert-warning">
        <strong>Sorry!</strong> No Product Found.
    </div>      
@endforelse
Run Code Online (Sandbox Code Playgroud)