【问题标题】:Too few arguments to function Illuminate\Http\Request::has(), 0 passed函数 Illuminate\Http\Request::has() 的参数太少,通过了 0
【发布时间】:2021-06-11 10:14:11
【问题描述】:

我见过很多类似的问题,但大多数答案看起来很复杂,与我的问题似乎不太相似。同样,我是 Laravel 的新手,需要最简单的解释。

我不想在视图中显示信息,只要我搜索就会显示。

我的控制器

public function index(Request $request)
{
    $transactions = UserTransaction::query();
    $userId = request()->get('userId');
    $price = request()->get('price');
    $type = request()->get('type');
    $status = request()->get('status');

    $ordering = request()->get('ordering');
    if($userId){
        $transactions->where('userId' , $userId);
    }
    if ($price) {
        $transactions->where('price' , $price);
    }
    if ($type) {
        $transactions->where('type' , $type);
    }
    if ($status) {
        $transactions->where('status' , $status);
    }

    return view('admin.transaction.index',[
        'transactions' => $transactions->paginate(5)->appends($request->except('page')),
        'stats' => $stats
    ]);
}

我的刀

@if( $transactions->count() > 0 && request()->has() )
     @foreach($transactions as $transaction)
         {{ $transaction->id }}
         {{ optional($transaction->user)->full_name }}
         {{ $transaction->type }}
      @endforeach
@endif

我收到此错误

【问题讨论】:

  • 你应该将参数传递给 request()->has() .like request()->has('userId')。在刀片中 @if( $transactions->count() > 0 && request()->has() )
  • 查看有关如何在Request 对象上使用has() 的文档。
  • 我可以使用 Laravel 技巧将 user 转换为 all 吗?
  • 我可以将用户转换为所有人是什么意思?
  • @if( $transactions->count() > 0 && request()->has('all') )

标签: php laravel


【解决方案1】:

我认为您正在寻找隐藏视图,直到用户搜索任何一个字段。所以您可以执行以下操作

@if( $transactions->count() > 0 &&collect($request->all())->filter()->isNotEmpty())

如果你想忽略页面检查,那么你可以使用 except

collect($request->except('page'))->filter()->isNotEmpty()

最好不要在过滤器值之一被填充之前执行查询,因为您不会以任何方式将其显示在视图中

public function index(Request $request)
{
   
    $userId = request()->get('userId');
    $price = request()->get('price');
    $type = request()->get('type');
    $status = request()->get('status');

    $ordering = request()->get('ordering');
    $transactions=[];
    if(collect($request->all())->filter()->isNotEmpty()){
        
        $transactions = UserTransaction::query();
    if($userId){
        $transactions->where('userId' , $userId);
    }
    if ($price) {
        $transactions->where('price' , $price);
    }
    if ($type) {
        $transactions->where('type' , $type);
    }
    if ($status) {
        $transactions->where('status' , $status);
    }
     $transactions->paginate(5)->appends($request->except('page'))
    }
        
        
    

    return view('admin.transaction.index',[
        'transactions' =>$transactions,
        'stats' => $stats
    ]);
}

除了在多个地方重复collect($request->except('page'))->filter()->isNotEmpty(),您还可以分配给控制器中的变量

【讨论】:

    【解决方案2】:

    您应该在控制器中检查数据是否已输入。如果不是,则为 $transactions 返回 null。

    public function index(Request $request)
    {
        if(count($request->all()) > 0) {
            $transactions = UserTransaction::query();
            $userId = request()->get('userId');
            $price = request()->get('price');
            $type = request()->get('type');
            $status = request()->get('status');
    
            $ordering = request()->get('ordering');
            if($userId){
                $transactions->where('userId' , $userId);
            }
            if ($price) {
                $transactions->where('price' , $price);
            }
            if ($type) {
                $transactions->where('type' , $type);
            }
            if ($status) {
                $transactions->where('status' , $status);
            }
    
            $transactions= $transactions->paginate(5)->appends($request->except('page'))
        } else {
            $transactions = null;
        }
    
        return view('admin.transaction.index',[
            'transactions' => $transactions,
            'stats' => $stats
        ]);
    }
    

    那么在你看来只需检查$transactions->count() > 0

    【讨论】:

      猜你喜欢
      • 2021-06-20
      • 2018-06-26
      • 2019-10-29
      • 2020-04-22
      • 2019-07-06
      • 2020-12-11
      • 2020-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多