<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
nazalas / laravel-persistent-table-filters example snippets
use Nazalas\PersistentTableFilters\Traits\HasPersistentFilters;
class CampaignIndex extends Component
{
use HasPersistentFilters;
// Unique key for this table — scopes saved state per resource
protected string $filterResource = 'campaigns';
// Which component properties make up the filter state
protected array $filterKeys = ['search', 'sort_by', 'sort_dir', 'status'];
public string $search = '';
public string $sort_by = 'name';
public string $sort_dir = 'asc';
public string $status = '';
public function mount(): void
{
// Restore last state (auto-persisted or named default)
$this->restoreFilters();
}
public function updatedSearch(): void
{
$this->resetPage();
$this->persistFilters(); // silently save on every change
}
public function updatedStatus(): void
{
$this->resetPage();
$this->persistFilters();
}
}
protected bool $autoSaveFilters = false;
$this->clearPersistedFilters();
// Save current state with a label
$filter = $this->saveFilter('Active campaigns');
// Save and mark as the default fallback
$filter = $this->saveFilter('My default view', setAsDefault: true);
$this->loadFilter($filterId);
// Also updates the auto-persisted state
$this->deleteFilter($filterId);
$filters = $this->getSavedFilters(); // Collection of TableFilter — excludes auto records
use Nazalas\PersistentTableFilters\Models\TableFilter;
// Save state manually
TableFilter::updateOrCreate(
['user_id' => auth()->id(), 'resource' => 'campaigns', 'is_auto' => true],
['label' => null, 'filters' => $request->only(['search', 'status', 'sort_by'])]
);
// Restore state
$state = TableFilter::forCurrentUser()
->forResource('campaigns')
->where('is_auto', true)
->first()
?->filters ?? [];