Custom Data in Editable v4 Table: Game Box Score

Filament 4

When you build a system that requires scoring or grading, you might immediately grab a custom page. But did you know that this can be made inside a table?

FilamentExamples ThumbBase

Get the Source Code:

How it works

In this project, we make use of the Filament Resource feature:

app/Filament/Resources/Tournaments/TournamentResource.php

use App\Filament\Resources\Tournaments\Pages\CreateTournament;
use App\Filament\Resources\Tournaments\Pages\EditTournament;
use App\Filament\Resources\Tournaments\Pages\ListTournaments;
use App\Filament\Resources\Tournaments\Pages\ManagePlayerStats;
use App\Filament\Resources\Tournaments\Schemas\TournamentForm;
use App\Filament\Resources\Tournaments\Tables\TournamentsTable;
use App\Models\Tournament;
use BackedEnum;
use Filament\Resources\Resource;
use Filament\Schemas\Schema;
use Filament\Support\Icons\Heroicon;
use Filament\Tables\Table;
 
class TournamentResource extends Resource
{
// ...
 
public static function getRelations(): array
{
return [
RelationManagers\TeamsRelationManager::class,
RelationManagers\MatchesRelationManager::class,
];
}
 
// ...
}

This allows us to have two relation managers inside our Tournament Resource and manage Teams/Matches:

app/Filament/Resources/Tournaments/RelationManagers/TeamsRelationManager.php

use App\Models\User;
use Filament\Actions\AttachAction;
use Filament\Actions\BulkActionGroup;
use Filament\Actions\CreateAction;
use Filament\Actions\DeleteAction;
use Filament\Actions\DeleteBulkAction;
use Filament\Actions\DetachAction;
use Filament\Actions\DetachBulkAction;
use Filament\Actions\EditAction;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\TextInput;
use Filament\Resources\RelationManagers\RelationManager;
use Filament\Schemas\Schema;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
 
class TeamsRelationManager extends RelationManager
{
protected static string $relationship = 'teams';
 
public function form(Schema $schema): Schema
{
return $schema
->components([
TextInput::make('name')
->required()
->maxLength(255),
// ...

Next, in this example, we will:

  • Build Matches Relation Manager
  • Build Individual Player Stats Manager using Filament Table
  • Build Individual Scoring Columns inside of Table
The FULL tutorial is available after the purchase: in the Readme file of the official repository you would get invited to.
Get the Source Code: All 113 Premium Examples for $99