Table Base Class API Reference
Zonvoir\ZonvoirTable\Table is the abstract base class for backend table definitions.
| Item | Value |
|---|---|
| Class | Zonvoir\ZonvoirTable\Table |
| Type | abstract class |
| Implements | Arrayable, JsonSerializable |
| Required override | columns() |
| Factory methods | make(), create() |
Properties Designed For Table Classes
Section titled “Properties Designed For Table Classes”| Property | Type | Default | Purpose |
|---|---|---|---|
$resource |
?string |
null |
Eloquent model class used by query(). |
$search |
`array | string | null` |
$defaultSort |
?string |
null |
Default sort key. Prefix with - for descending. |
$pagination |
bool |
true |
Enable pagination. |
$paginationType |
PaginationType |
PaginationType::Standard |
Select standard, simple, or cursor pagination. |
$perPageOptions |
?array |
[15, 30, 50, 100] |
Allowed per-page values. |
$defaultPerPage |
?int |
15 |
Default per-page value. |
$scrollToTop |
bool |
true |
Frontend pagination scroll behavior. |
$stickyHeader |
?bool |
false |
Sticky header metadata. |
$rowSelectionKey |
?string |
'id' |
Row key used for selection. |
$selectable |
bool |
true |
Enable row selection. |
$persistRowSelectionAcrossPages |
bool |
false |
Preserve selected keys across page changes. |
$emptyState |
`TableEmptyState | array | false |
Core Methods
Section titled “Core Methods”make()
Signature
public static function make(): static
Notes
Instantiate the table.
create()
Signature
public static function create(): static
Notes
Alias of `make()`.
name()
Signature
public function name(): string
Notes
Explicit or inferred table name.
isNamed()
Signature
public function isNamed(): bool
Notes
Check for an explicit table name.
id()
Signature
public function id(): string
Notes
Alias-style accessor for `name()`.
named()
Signature
public function named(string $name): static
Notes
Clone with a query namespace.
as()
Signature
public function as(string $name): static
Notes
Alias of `named()`.
columns()
Signature
abstract public function columns(): array
Notes
Required. Return `list
resource()
Signature
public function resource(): Builder|string|null
Notes
Return a model class, builder, or null.
query()
Signature
public function query(): Builder
Notes
Resolve the table query from `resource()`.
apply()
Signature
public function apply(?Builder $query = null, ?TableRequest $request = null): Builder
Notes
Apply search and sort to a query.
paginate()
Signature
public function paginate(?Builder $query = null, ?TableRequest $request = null): mixed
Notes
Run the configured paginator.
results()
Signature
public function results(?Builder $query = null, ?TableRequest $request = null): array
Notes
Return definition plus paginated rows.
payload()
Signature
public function payload(?TableRequest $request = null): array
Notes
Build the table definition payload.
definition()
Signature
public function definition(): array
Notes
Alias-style definition payload without request input.
toArray()
Signature
public function toArray(): array
Notes
Serialize results for the current request.
jsonSerialize()
Signature
public function jsonSerialize(): array
Notes
Delegate to `toArray()`.
Override Hooks
Section titled “Override Hooks”transformModel()
Signature
public function transformModel(Model $model, array $data): array
Modify serialized row data.
rowUrl()
Signature
public function rowUrl(Model $model, Url $url): string|Url|null
Add row navigation metadata.
actions()
Signature
public function actions(): array
Return row and bulk `Action` definitions.
exports()
Signature
public function exports(): array
Return `Export` definitions.
isSelectable()
Signature
public function isSelectable(Model $model): bool
Decide whether a row can be selected.
defaultState()
Signature
public function defaultState(): array|TableStateContract
Override initial state.
meta()
Signature
public function meta(): array
Build table metadata. Usually extended with care.
emptyState()
Signature
public function emptyState(): TableEmptyState|array|false|null
Return empty state metadata.
withQueryBuilder()
Signature
public function withQueryBuilder(TableQueryBuilder $queryBuilder): ?TableQueryBuilder
Customize the query builder service.
State And Navigation
Section titled “State And Navigation”state()
Signature
public function state(?TableRequest $request = null): TableState
Merge default state and table request input.
stateFromRequest()
Signature
public function stateFromRequest(Request $request): TableState
Build state from an HTTP request.
defaultSort()
Signature
public function defaultSort(): ?string
Read default sort configuration.
stickyHeader()
Signature
public function stickyHeader(): bool
Read sticky header configuration.
rowSelectionKey()
Signature
public function rowSelectionKey(): ?string
Resolve selected row key name.
persistsRowSelectionAcrossPages()
Signature
public function persistsRowSelectionAcrossPages(): bool
Read row selection persistence configuration.
navigation()
Signature
public function navigation(?TableRequest $request = null): TableNavigation
Build query string transitions.
searchable()
Signature
public function searchable(): array
Normalize table-level search fields.
pagination()
Signature
public function pagination(): PaginationConfiguration
Resolve pagination configuration.
pageName()
Signature
public function pageName(): string
Resolve query string page key.
cursorName()
Signature
public function cursorName(): string
Resolve query string cursor key.
queryStringState()
Signature
public function queryStringState(Contracts\TableState $state, bool $includePage = false): array
Serialize state for URLs.
Definition Methods
Section titled “Definition Methods”columnsDefinition()
Signature
public function columnsDefinition(): array
Validate and normalize column definitions.
actionsDefinition()
Signature
public function actionsDefinition(): array
Validate and normalize action definitions.
exportsDefinition()
Signature
public function exportsDefinition(): array
Validate and normalize export definitions.
Example
Section titled “Example”use App\Models\User;use Zonvoir\ZonvoirTable\Columns\TextColumn;use Zonvoir\ZonvoirTable\Table;
class UsersTable extends Table{ protected ?string $resource = User::class; protected array|string|null $search = ['name', 'email']; protected ?string $defaultSort = 'name';
public function columns(): array { return [ TextColumn::make('name')->sortable()->searchable(), TextColumn::make('email')->searchable(), ]; }}