1. Go to this page and download the library: Download nben/filament-record-nav library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
nben / filament-record-nav example snippets
namespace App\Filament\Resources\PostResource\Pages;
use App\Filament\Resources\PostResource;
use Filament\Resources\Pages\ViewRecord;
use Nben\FilamentRecordNav\Actions\NextRecordAction;
use Nben\FilamentRecordNav\Actions\PreviousRecordAction;
class ViewPost extends ViewRecord
{
protected static string $resource = PostResource::class;
protected function getHeaderActions(): array
{
return [
PreviousRecordAction::make(),
NextRecordAction::make(),
// ... your other actions
];
}
}
use Nben\FilamentRecordNav\Actions\NextRecordAction;
use Nben\FilamentRecordNav\Actions\PreviousRecordAction;
use Nben\FilamentRecordNav\Enums\NavigationPage;
protected function getHeaderActions(): array
{
return [
// Both navigate to the edit page
PreviousRecordAction::make()->navigateTo(NavigationPage::Edit),
NextRecordAction::make()->navigateTo(NavigationPage::Edit),
];
}
// Previous stays on view, next goes to edit
PreviousRecordAction::make()->navigateTo(NavigationPage::View),
NextRecordAction::make()->navigateTo(NavigationPage::Edit),
use Nben\FilamentRecordNav\Actions\NextRecordAction;
use Nben\FilamentRecordNav\Actions\PreviousRecordAction;
use Nben\FilamentRecordNav\Enums\NavigationPage;
protected function getHeaderActions(): array
{
return [
PreviousRecordAction::make()->navigateTo(NavigationPage::custom('verified-view')),
NextRecordAction::make()->navigateTo(NavigationPage::custom('verified-view')),
];
}
use Filament\Support\Enums\Size;
use Nben\FilamentRecordNav\Actions\NextRecordAction;
use Nben\FilamentRecordNav\Actions\PreviousRecordAction;
PreviousRecordAction::make()
->label('← Previous')
->color('secondary')
->size(Size::Small)
->tooltip('Go to previous record')
->keyBindings(['mod+left']),
NextRecordAction::make()
->label('Next →')
->icon('heroicon-o-arrow-right')
->color('secondary')
->size(Size::Small)
->tooltip('Go to next record')
->keyBindings(['mod+right']),
namespace App\Filament\Resources\PostResource\Pages;
use App\Filament\Resources\PostResource;
use Filament\Resources\Pages\ViewRecord;
use Illuminate\Database\Eloquent\Model;
use Nben\FilamentRecordNav\Actions\NextRecordAction;
use Nben\FilamentRecordNav\Actions\PreviousRecordAction;
use Nben\FilamentRecordNav\Concerns\WithRecordNavigation;
class ViewPost extends ViewRecord
{
use WithRecordNavigation;
protected static string $resource = PostResource::class;
protected function getHeaderActions(): array
{
return [
PreviousRecordAction::make(),
NextRecordAction::make(),
];
}
// Only navigate through published posts, ordered by published_at
public function getPreviousRecord(): ?Model
{
return $this->getRecord()
->newQuery()
->where('status', 'published')
->where('published_at', '<', $this->getRecord()->published_at)
->orderBy('published_at', 'desc')
->first();
}
public function getNextRecord(): ?Model
{
return $this->getRecord()
->newQuery()
->where('status', 'published')
->where('published_at', '>', $this->getRecord()->published_at)
->orderBy('published_at', 'asc')
->first();
}
}
use Illuminate\Database\Eloquent\Model;
use Nben\FilamentRecordNav\Enums\CustomNavigationPage;
use Nben\FilamentRecordNav\Enums\NavigationPage;
// Always navigate to the edit page, ignoring the action's NavigationPage setting
public function getRecordNavigationUrl(
Model $record,
NavigationPage|CustomNavigationPage $page
): string {
return static::getResource()::getUrl('edit', ['record' => $record]);
}
public function getRecordNavigationUrl(
Model $record,
NavigationPage|CustomNavigationPage $page
): string {
// $page->value is 'view', 'edit', or your custom route name
return static::getResource()::getUrl($page->value, ['record' => $record]);
}
use Nben\FilamentRecordNav\Concerns\WithRecordNavigation;
use Nben\FilamentRecordNav\Contracts\HasRecordNavigation;
class ViewPost extends ViewRecord implements HasRecordNavigation
{
use WithRecordNavigation; // provides the default implementation
}
// config/filament-record-nav.php
return [
/*
| The column used to determine record order for navigation.
| When navigating previous, queries for the nearest record with a lower
| value. When navigating next, queries for the nearest record with a higher
| value. Add a database index on this column for best performance.
|
| Common choices: 'id', 'created_at', 'updated_at', 'sort_order'
*/
'order_column' => 'id',
/*
| Sort directions for the previous and next queries.
| 'desc' for previous ensures the closest lower record is returned first.
| 'asc' for next ensures the closest higher record is returned first.
| Only change these if you have a non-standard ordering