Installation:
composer require moox/category
php artisan mooxcategory:install
This sets up the package with default configurations (e.g., categories table, Category resource).
First Use Case:
Category via /admin/categories (default route).php artisan migrate
Where to Look First:
config/moox-category.php (adjust table/namespace if needed).app/Filament/Resources/CategoryResource.php (customize fields, policies, etc.).database/migrations/[timestamp]_create_categories_table.php (modify schema as needed).Customizing the Resource:
CategoryResource to add/remove fields, policies, or widgets:
// app/Filament/Resources/CategoryResource.php
public static function form(Form $form): Form
{
return $form
->schema([
TextInput::make('name')->required(),
// Add custom fields here
]);
}
Integration with Eloquent:
Category model (app/Models/Category.php) in controllers/services:
use App\Models\Category;
$categories = Category::with('posts')->get(); // Example relation
API Endpoints:
GET /api/admin/categories).routes/web.php or routes/api.php if needed.Seeding Data:
// database/seeders/CategorySeeder.php
Category::create(['name' => 'Electronics']);
Package Customization:
build.php):
php build.php
(Select options like Post for entity and posts for table name.)Relationships:
Category model:
public function posts(): HasMany
{
return $this->hasMany(Post::class);
}
Validation:
CategoryResource:
use Illuminate\Validation\Rules\Unique;
TextInput::make('slug')
->required()
->unique(Category::class, 'slug'),
Localization:
resources/lang/en/category.php:
return [
'resources' => [
'category' => [
'singular' => 'Category',
'plural' => 'Categories',
],
],
];
Events:
created) in app/Providers/EventServiceProvider.php:
Category::created(function ($category) {
// Send notification or log activity
});
Namespace Conflicts:
composer.json matches your GitHub repo (e.g., vendor/package-name).config/moox-category.php to reflect the correct namespace for models/resources.Migration Issues:
build.php, run:
php artisan migrate:fresh
to avoid conflicts with default categories table.Filament Permissions:
CategoryResource is registered in app/Providers/Filament/AdminPanelProvider.php:
$panel->resources([
CategoryResource::class,
]);
Caching:
php artisan filament:cache:clear
Package Updates:
moox/category package, manually merge changes from the template repo to avoid overwriting customizations.Filament Debugging:
.env:
FILAMENT_DEBUG=true
storage/logs/filament.log.Database Queries:
barryvdh/laravel-debugbar) to inspect SQL queries:
composer require barryvdh/laravel-debugbar
Route Conflicts:
php artisan route:list
Model Binding:
// app/Filament/Resources/CategoryResource.php
public static function getModel(): string
{
return Category::class;
}
Custom Policies:
app/Policies/CategoryPolicy.php:
public function delete(User $user, Category $category)
{
return $user->isAdmin();
}
protected static ?string $policy = CategoryPolicy::class;
Widgets:
CategoryStatsWidget):
use Filament\Widgets\StatsOverviewWidget;
StatsOverviewWidget::make()
->columns(2)
->addCount('Total Categories', Category::query()),
API Resources:
toArray() in the model or creating a custom API resource.Commands:
app/Console/Commands to interact with categories (e.g., bulk import):
php artisan make:command ImportCategories
Testing:
phpunit.xml:
<env name="FILAMENT_TESTING" value="true"/>
$this->actingAs($user)
->get('/admin/categories')
->assertOk();
How can I help you explore Laravel packages today?