Laravel Livewire 分页结果在点击下一步后消失 Page/Page 数字
Laravel Livewire Pagination Result Disappear After Clicking Next Page/Page Number
我一直在寻找与上述类似的问题,但我找不到,所以我要做一个
我的问题是,当我使用 Laravel Livewire 进行非常简单的分页时,第一页显示得很好,但是当我单击“下一个 Page/Page 编号”时,结果就消失了,尽管还有更多结果要显示,但我完全不知道,无论我如何尝试。
As you can see, the simple pagination work just fine, there is next and previous button and a very big next and previous picture below
But the moment i click next page or page number, the result just disappear, the total number of result even go to 0
这是我的组件代码:
namespace App\Http\Livewire;
use Livewire\Component;
use Illuminate\Http\Request;
use DB;
use Livewire\WithPagination;
class Category extends Component
{
use WithPagination;
public function render(Request $request)
{
$id = $request->id;
$product_count = DB::table('product')->where('category_id', $id)->count();
$page = $request->page ?? 1;
$product_all = DB::table('product')->where('category_id', $id)->paginate(3);
return view('livewire.category',[
'product_all' => $product_all,
'product_count' => $product_count,
'page' => $page,
]);
}
}
这是我的查看代码:
<div class="row">
@foreach ($product_all as $product)
<div class="col-lg-4 col-md-6 col-12 mt-4 pt-2">
@php
product($product);
@endphp
</div>
@endforeach
<!-- PAGINATION START -->
@if ($product_all instanceof \Illuminate\Pagination\LengthAwarePaginator)
{{ $product_all->links() }}
@endif
<!-- PAGINATION END -->
</div>
还有一个小通知,我尝试了没有 livewire 的分页(只是正常的 laravel 分页)并且它工作得很好,这就是为什么我真的对发生的事情一无所知
我已经包含了 livewire @livewireStyles 和@livewireScripts,但我在其他任何地方都找不到答案,因为我没有看到任何符合我的问题的问题,而且我对 livewire 有点陌生
我认为你的问题与 livewire 组件的 render 方法上的请求参数有关,一旦 livewire 重新渲染就无法访问请求值,直到下次浏览器刷新。
public function render(Request $request)
相反,使用 livewire 属性将 id 和页面绑定到 livewire 可以在重新呈现时读取的值
@livewire('some-component', ['category_id' => $parent_category_id, 'page' => $parent_page_value])
像上面一样,livewire 将此值绑定到自身属性并在重新渲染时从中读取
public $category_id, $page;
public function render()
{
$product_count = DB::table('product')->where('category_id', $this->category_id)->count();
$product_all = DB::table('product')->where('category_id', $this->category_id)->paginate(3);
return view('livewire.category',[
'product_all' => $product_all,
'product_count' => $product_count,
'page' => $this->page,
]);
}
我一直在寻找与上述类似的问题,但我找不到,所以我要做一个
我的问题是,当我使用 Laravel Livewire 进行非常简单的分页时,第一页显示得很好,但是当我单击“下一个 Page/Page 编号”时,结果就消失了,尽管还有更多结果要显示,但我完全不知道,无论我如何尝试。
As you can see, the simple pagination work just fine, there is next and previous button and a very big next and previous picture below
But the moment i click next page or page number, the result just disappear, the total number of result even go to 0
这是我的组件代码:
namespace App\Http\Livewire;
use Livewire\Component;
use Illuminate\Http\Request;
use DB;
use Livewire\WithPagination;
class Category extends Component
{
use WithPagination;
public function render(Request $request)
{
$id = $request->id;
$product_count = DB::table('product')->where('category_id', $id)->count();
$page = $request->page ?? 1;
$product_all = DB::table('product')->where('category_id', $id)->paginate(3);
return view('livewire.category',[
'product_all' => $product_all,
'product_count' => $product_count,
'page' => $page,
]);
}
}
这是我的查看代码:
<div class="row">
@foreach ($product_all as $product)
<div class="col-lg-4 col-md-6 col-12 mt-4 pt-2">
@php
product($product);
@endphp
</div>
@endforeach
<!-- PAGINATION START -->
@if ($product_all instanceof \Illuminate\Pagination\LengthAwarePaginator)
{{ $product_all->links() }}
@endif
<!-- PAGINATION END -->
</div>
还有一个小通知,我尝试了没有 livewire 的分页(只是正常的 laravel 分页)并且它工作得很好,这就是为什么我真的对发生的事情一无所知
我已经包含了 livewire @livewireStyles 和@livewireScripts,但我在其他任何地方都找不到答案,因为我没有看到任何符合我的问题的问题,而且我对 livewire 有点陌生
我认为你的问题与 livewire 组件的 render 方法上的请求参数有关,一旦 livewire 重新渲染就无法访问请求值,直到下次浏览器刷新。
public function render(Request $request)
相反,使用 livewire 属性将 id 和页面绑定到 livewire 可以在重新呈现时读取的值
@livewire('some-component', ['category_id' => $parent_category_id, 'page' => $parent_page_value])
像上面一样,livewire 将此值绑定到自身属性并在重新渲染时从中读取
public $category_id, $page;
public function render()
{
$product_count = DB::table('product')->where('category_id', $this->category_id)->count();
$product_all = DB::table('product')->where('category_id', $this->category_id)->paginate(3);
return view('livewire.category',[
'product_all' => $product_all,
'product_count' => $product_count,
'page' => $this->page,
]);
}