yemenpoint / filament-tree
Filament Tree field and page
Installs: 1 383
Dependents: 0
Suggesters: 0
Security: 0
Stars: 29
Watchers: 2
Forks: 10
Open Issues: 1
Language:Blade
Requires
- php: ^8.0
- filament/filament: *
README
composer require yemenpoint/filament-tree
publish assets
php artisan vendor:publish --tag="filament-tree-assets" php artisan vendor:publish --tag="filament-tree-views"
Tree Field
migration
Schema::table('tryings', function (Blueprint $table) { $table->json("items")->nullable(); });
use Yemenpoint\FilamentTree\Forms\Components\TreeField; TreeField::make("items") ->setMaxDepth(999) ->default([["id" => "1", "name" => "item 1", "children" => [["id" => "2", "name" => "item 2", "children" => []]]]]),
Tree Page
Table structure and model
categories
id - integer
parent_id - integer
order - integer
name - string
Schema::create('categories', function (Blueprint $table) { $table->id(); $table->unsignedBigInteger('parent_id')->nullable(); $table->integer('order')->nullable()->default(0); $table->string('name'); });
model
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Yemenpoint\FilamentTree\HasTree; class Category extends Model { use HasTree; function children() { return $this->hasMany(self::class, 'parent_id', 'id')->with("children")->orderBy("order"); } }
page
<?php namespace App\Filament\Resources\Application\CategoryResource\Pages; use App\Filament\Resources\Application\CategoryResource; use App\Models\Category; use Yemenpoint\FilamentTree\TreePage; class TreeCategory extends TreePage { protected static string $resource = CategoryResource::class; public function getItems(): array { return Category::with("children")->whereNull("parent_id")->orderBy("order")->get()->toArray(); } public function getMaxDepth(): int { return parent::getMaxDepth(); // TODO: Change the autogenerated stub } public function isDisabled(): bool { return parent::isDisabled(); // TODO: Change the autogenerated stub } }