【问题标题】:Undefined variable - bootstrap pagination - Laravel未定义的变量 - 引导分页 - Laravel
【发布时间】:2021-07-13 23:03:54
【问题描述】:

我有一个控制器,它从数据库中过滤数据并将其发送到我使用引导分页在多个页面上显示它的视图...数据被列在视图上,并且一切正常,但问题是当我尝试转到第二页时出现此错误: Undefined variable: filtredPosts

这是控制器。

public function filter(Request $request){
    $query = Post::query();
    if ($request->country){
        $query->where('country','=',$request->country);
    }
    if($request->city){
        $query->where('city','=',$request->city);
    }
    if($request->type){
        $query->where('type','=',$request->type);
    }
    if($request->sortby){
        if ($request->sortby=='newest'){
            $filtredPosts = $query->orderBy('created_at', 'desc')->paginate(9);
            $sortby = 'newest';
        }elseif ($request->sortby=='oldest'){
            $filtredPosts = $query->orderBy('created_at', 'asc')->paginate(9);
            $sortby = 'oldest';
        }
    }

    return view('posts.postDashboard',['posts'=>$filtredPosts, 'sortby'=>$sortby, 'country'=>$request->country,'city'=>$request->city,'type'=>$request->type]);
}

【问题讨论】:

    标签: laravel bootstrap-4 pagination


    【解决方案1】:

    您的变量filtredPosts 仅在$request->sortby 存在时才被定义。 如果您的请求没有 sortby 键,则此变量将未定义。

    你可以在if($request->sortby)检查之前定义变量来解决它:

    ...
    $filtredPosts = $query;
    
    if($request->sortby){
        if ($request->sortby=='newest'){
            $filtredPosts = $query->orderBy('created_at', 'desc')->paginate(9);
            $sortby = 'newest';
        }elseif ($request->sortby=='oldest'){
            $filtredPosts = $query->orderBy('created_at', 'asc')->paginate(9);
            $sortby = 'oldest';
        }
    }
    

    此外,在您的刀片视图中,您需要将查询字符串传递给分页使用

    $posts->withQueryString()->links();
    

    【讨论】:

      【解决方案2】:

      您没有在刀片上提供分页代码,可能是这样的:

      {{ $posts->links() }}
      

      您需要在 Paginator 方法上使用appends 传递额外的参数,例如:

      {!! $posts->appends(['sortby' => $sortby, 'country' => $country, 'city' => $city])->links() !!}
      

      Laravel 7以上 版本上,您可以在 Paginator 实例上调用 withQueryString() 方法:

      {!! $posts->withQueryString()->links() !!}
      

      【讨论】:

      • 我添加了额外的参数,它工作正常......谢谢。
      猜你喜欢
      • 1970-01-01
      • 2018-09-02
      • 2014-09-30
      • 2019-04-29
      • 1970-01-01
      • 2015-05-15
      • 1970-01-01
      • 2019-03-01
      • 2023-03-05
      相关资源
      最近更新 更多