ManageTextbooks.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace App\Filament\Resources\TextbookResource\Pages;
  3. use App\Filament\Resources\TextbookResource;
  4. use App\Services\TextbookApiService;
  5. use Filament\Actions;
  6. use Filament\Resources\Pages\ListRecords;
  7. use Illuminate\Contracts\Pagination\Paginator;
  8. use Illuminate\Pagination\LengthAwarePaginator;
  9. class ManageTextbooks extends ListRecords
  10. {
  11. protected static string $resource = TextbookResource::class;
  12. protected function getHeaderActions(): array
  13. {
  14. return [
  15. Actions\CreateAction::make()
  16. ->label('新建教材'),
  17. ];
  18. }
  19. protected function paginateTableQuery(\Illuminate\Database\Eloquent\Builder $query): Paginator
  20. {
  21. $apiService = app(TextbookApiService::class);
  22. $page = request()->get('page', 1);
  23. $perPage = $this->getTableRecordsPerPage();
  24. $result = $apiService->getTextbooks([
  25. 'page' => $page,
  26. 'per_page' => $perPage,
  27. ]);
  28. $records = collect($result['data'] ?? [])->map(function ($item) {
  29. return new \App\Models\Textbook($item);
  30. });
  31. return new LengthAwarePaginator(
  32. $records,
  33. $result['meta']['total'] ?? 0,
  34. $perPage,
  35. $page,
  36. ['path' => request()->url()]
  37. );
  38. }
  39. }