【问题标题】:Laravel custom paginate not workingLaravel自定义分页不起作用
【发布时间】:2017-10-26 18:45:15
【问题描述】:

我在 laravel 上的分页有问题。

这之前可以正常工作。

$users = user::getAllUsers()->paginate(10);

但我需要更改代码,因此唯一的方法是使用自定义分页

use Illuminate\Pagination\Paginator;
use Illuminate\Support\Facades\Input;

public function companies()
{
     $users = user::getAllUsers()->get(//some codes here);
     $paginated = = new Paginator($users , 2);

     $paginated ->setPath('/users/view');
     return view('users.view', compact('paginated'));
}

第二个代码的问题是,当我按下下一步按钮重定向到 page=2 时,视图中的值没有改变。网址正在改变。

不确定我是否在这里遗漏了什么。请帮忙

【问题讨论】:

    标签: php laravel pagination


    【解决方案1】:

    使用 LengthAwarePaginator

    use Illuminate\Pagination\LengthAwarePaginator;
    use Illuminate\Http\Request;
    
    public function companies(Request $request){
        ...
        $items_per_page = 2;
        $paginated = new LengthAwarePaginator(
            $users->forPage($request->page ?: 1, $items_per_page),
            $users->count(),
            $items_per_page
        );
        ...
    }
    

    【讨论】:

    • 我收到“未定义变量:请求”错误
    • @ReyNorbertBesmonte 查看更新后的答案。或者,您可以使用 Input::get('page') 代替 $request->page,但建议使用 Request (for larval 5.x)
    • 谢谢,这解决了我的问题。请问您如何为此设置路径?现在发生的情况是它重定向到基本 url (localhost:8000?page=2),但我需要它去 localhost:8000\users\view?page=2
    • 知道了。我放回了我的 $paginated ->setPath('/users/view');谢谢大佬帮忙。干杯:)
    • 你不需要为此设置路径,默认情况下它会在 GET 参数中返回带有新页码的相同 url
    【解决方案2】:

    你需要将它作为第三个参数传递

    $paginated = new Paginator($users , 2, $request->get('page'));
    

    参数顺序:items, perPage, currentPage

    【讨论】:

    • 我收到“未定义变量:请求”错误
    • $request 你可以在控制器函数中注入。
    猜你喜欢
    • 2021-08-02
    • 1970-01-01
    • 2022-11-16
    • 2011-08-13
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多