Manage any type on your app in Database with easy to use Resource for FilamentPHP
composer require tomatophp/filament-types
after install your package please run this command
php artisan filament-types:install
finally reigster the plugin on /app/Providers/Filament/AdminPanelProvider.php
->plugin(\TomatoPHP\FilamentTypes\FilamentTypesPlugin::make())
you can add new type using config file config/filament-types.php
or you can register a type from your provider using our Facade
use TomatoPHP\FilamentTypes\Facades\FilamentTypes;
FilamentTypes::register([
'types',
'groups'
], 'accounts');
you can find any type with the helper method to use it anywhere
type_of(key: 'pending',for: 'notes',type: 'groups');
it will return type model for you.
you can use type column in your table like this
use TomatoPHP\FilamentTypes\Components\TypeColumn;
TypeColumn::make('type')
->for('users')
->type('status')
->allowDescription()
->searchable(),
on your .env
add this
CACHE_STORE=array
MODEL_CACHE_STORE=array
supported cache stores are
+ Redis
+ MemCached
+ APC
+ Array
you can create a page for selected type by just extand base type page
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([
"ar" => "مهام",
"en" => "TODO"
])
->color('#1461e3')
->icon('heroicon-o-list-bullet'),
Type::make('ideas')
->name([
"ar" => "أفكار",
"en" => "Ideas"
])
->color('#13e0da')
->icon('heroicon-o-sparkles'),
Type::make('saved')
->name([
"ar" => "محفوظ",
"en" => "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
public static function shouldRegisterNavigation(): bool
{
return true;
}
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
<x-tomato-type :type="$type" label="Group"/>
you can publish config file by use this command
php artisan vendor:publish --tag="filament-types-config"
you can publish views file by use this command
php artisan vendor:publish --tag="filament-types-views"
you can publish languages file by use this command
php artisan vendor:publish --tag="filament-types-lang"
you can publish migrations file by use this command
php artisan vendor:publish --tag="filament-types-migrations"
Checkout our Awesome TomatoPHP