https://github.com/tomatophp/filament-types
Manage any type on your app in Database with easy to use Resource for FilamentPHP
https://github.com/tomatophp/filament-types
enum filament filamentphp laravel manage-types type-application type-service types
Last synced: 9 months ago
JSON representation
Manage any type on your app in Database with easy to use Resource for FilamentPHP
- Host: GitHub
- URL: https://github.com/tomatophp/filament-types
- Owner: tomatophp
- License: mit
- Created: 2024-04-10T23:38:16.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2025-08-26T02:46:07.000Z (10 months ago)
- Last Synced: 2025-08-26T04:03:53.567Z (10 months ago)
- Topics: enum, filament, filamentphp, laravel, manage-types, type-application, type-service, types
- Language: PHP
- Homepage: https://tomatophp.com/en/open-source/filament-types
- Size: 3.96 MB
- Stars: 46
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: .github/CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
- Code of conduct: CODE_OF_CONDUCT.md
- Security: .github/SECURITY.md
Awesome Lists containing this project
- awesome - Filament Types
README

# Filament Types Manager
[](https://github.com/tomatophp/filament-types/actions/workflows/dependabot/dependabot-updates)
[](https://github.com/tomatophp/filament-types/actions/workflows/fix-php-code-styling.yml)
[](https://github.com/tomatophp/filament-types/actions/workflows/tests.yml)
[](https://packagist.org/packages/tomatophp/filament-types)
[](https://packagist.org/packages/tomatophp/filament-types)
[](https://packagist.org/packages/tomatophp/filament-types)
Manage any type on your app in Database with easy to use Resource for FilamentPHP
## Screenshots




## Installation
```bash
composer require tomatophp/filament-types
```
after install your package please run this command
```bash
php artisan filament-types:install
```
finally register the plugin on `/app/Providers/Filament/AdminPanelProvider.php`
```php
use TomatoPHP\FilamentTypes\Services\Contracts\Type;
use TomatoPHP\FilamentTypes\Services\Contracts\TypeFor;
use TomatoPHP\FilamentTypes\Services\Contracts\TypeOf;
->plugin(\TomatoPHP\FilamentTypes\FilamentTypesPlugin::make())
->types([
TypeFor::make('posts')
->label('Posts')
->types([
TypeOf::make('categories')
->label('Categories')
->register([
Type::make('news')
->name('News')
->icon('heroicon-o-newspaper')
->color('#fefefe')
])
])
])
```
## Register Type using provider
you can register a type from your provider using our Facade
```php
use TomatoPHP\FilamentTypes\Facades\FilamentTypes;
use TomatoPHP\FilamentTypes\Services\Contracts\Type;
use TomatoPHP\FilamentTypes\Services\Contracts\TypeFor;
use TomatoPHP\FilamentTypes\Services\Contracts\TypeOf;
FilamentTypes::register([
TypeFor::make('products')
->label('Product')
->types([
TypeOf::make('sizes')
->label('Sizes')
->register([
Type::make('xl')
->name('XL')
->icon('heroicon-o-adjustments-horizontal')
->color('warning'),
Type::make('sm')
->name('SM')
->icon('heroicon-o-adjustments-horizontal')
->color('warning')
])
]),
]);
```
## Config Locales
You can change the locals within the `filament-types` config.
- Publish the config file/
- Modify the `locals` array to include the two character language code that applys to the language you wish to offer. EG:
```
'locals' = ['en'],
```
## Use Type Helper
you can find any type with the helper method to use it anywhere
```php
type_of(
key: 'pending',
for: 'notes',
type: 'groups'
);
```
it will return type model for you.
## Use Type Column
you can use type column in your table like this
```php
use TomatoPHP\FilamentTypes\Components\TypeColumn;
TypeColumn::make('type')
->for('users')
->type('status')
->allowDescription()
->searchable(),
```
## Auto Caching
on your `.env` add this
```.env
CACHE_STORE=array
MODEL_CACHE_STORE=array
```
supported cache stores are
```php
+ Redis
+ MemCached
+ APC
+ Array
```
## Use Type Base Page
you can create a page for selected type by just extand base type page
```php
use TomatoPHP\FilamentTypes\Pages\BaseTypePage;
use TomatoPHP\FilamentTypes\Services\Contracts\Type;
class NotesGroups extends BaseTypePage
{
public function getTitle(): string
{
return "Notes Groups";
}
public function getType(): string
{
return "groups";
}
public function getFor(): string
{
return "notes";
}
public function getBackUrl()
{
return ManageNotes::getUrl(); // TODO: Change the autogenerated stub
}
public function getTypes(): array
{
return [
Type::make('todo')
->name("TODO")
->color('#1461e3')
->icon('heroicon-o-list-bullet'),
Type::make('ideas')
->name("Ideas")
->color('#13e0da')
->icon('heroicon-o-sparkles'),
Type::make('saved')
->name("Saved")
->color('#29a82e')
->icon('heroicon-o-arrow-down-on-square'),
];
}
}
```
it will be not appear on the navigation menu by default but you can change that by just use this method
```php
public static function shouldRegisterNavigation(): bool
{
return true;
}
```
## Use Type Component
if you like to use a type as a package we create a blade component for you to make it easy to use anywhere on your app like this
```html
```
## User Types Resource Hooks
we have add a lot of hooks to make it easy to attach actions, columns, filters, etc
### Table Columns
```php
use TomatoPHP\FilamentTypes\Filament\Resources\TypeResource\Table\TypeTable;
public function boot()
{
TypeTable::register([
\Filament\Tables\Columns\TextColumn::make('something')
]);
}
```
### Table Actions
```php
use TomatoPHP\FilamentTypes\Filament\Resources\TypeResource\Table\TypeActions;
public function boot()
{
TypeActions::register([
\Filament\Tables\Actions\ReplicateAction::make()
]);
}
```
### Table Filters
```php
use TomatoPHP\FilamentTypes\Filament\Resources\TypeResource\Table\TypeFilters;
public function boot()
{
TypeFilters::register([
\Filament\Tables\Filters\SelectFilter::make('something')
]);
}
```
### Table Bulk Actions
```php
use TomatoPHP\FilamentTypes\Filament\Resources\TypeResource\Table\TypeBulkActions;
public function boot()
{
TypeBulkActions::register([
\Filament\Tables\BulkActions\DeleteAction::make()
]);
}
```
### From Components
```php
use TomatoPHP\FilamentTypes\Filament\Resources\TypeResource\Form\TypeForm;
public function boot()
{
TypeForm::register([
\Filament\Forms\Components\TextInput::make('something')
]);
}
```
### Page Actions
```php
use TomatoPHP\FilamentTypes\Filament\Resources\TypeResource\Actions\ManagePageActions;
public function boot()
{
ManagePageActions::register([
Filament\Actions\Action::make('action')
]);
}
```
## Publish Assets
you can publish config file by use this command
```bash
php artisan vendor:publish --tag="filament-types-config"
```
you can publish views file by use this command
```bash
php artisan vendor:publish --tag="filament-types-views"
```
you can publish languages file by use this command
```bash
php artisan vendor:publish --tag="filament-types-lang"
```
you can publish migrations file by use this command
```bash
php artisan vendor:publish --tag="filament-types-migrations"
```
## Testing
if you like to run `PEST` testing just use this command
```bash
composer test
```
## Code Style
if you like to fix the code style just use this command
```bash
composer format
```
## PHPStan
if you like to check the code by `PHPStan` just use this command
```bash
composer analyse
```
## Other Filament Packages
Checkout our [Awesome TomatoPHP](https://github.com/tomatophp/awesome)