Filament Admin
Posts Resource
The PostResource provides a full CRUD interface for blog posts.
Form Fields
| Field | Type | Notes |
|---|---|---|
| Title | TextInput | Required, max 255 |
| Slug | TextInput | Auto-generated, unique, frozen on rename |
| Content | MarkdownEditor | Required, full toolbar |
| Excerpt | Textarea | 3 rows |
| Status | Toggle | Hydrates to/from the `Draft |
| Published At | DateTimePicker | Future value = scheduled |
| Category | Select | Searchable, create inline |
| Tags | Select | Multi, searchable, create inline — only visible when features.tags is on |
| Author | Select | Defaults to current user |
| Featured Image | FileUpload | Image, public disk — auto-swaps to SpatieMediaLibraryFileUpload when features.media_library is on AND the package is installed |
| SEO | SEO Component | Title + description (collapsible) |
List Tabs
Posts are organized into tabs:
| Tab | Filter |
|---|---|
| Drafts | status = draft |
| Scheduled | status = published AND published_at > now |
| Published | status = published AND published_at <= now |
Per-row actions
- View — opens the post URL (published) or signed preview URL (draft) in a new tab
- Edit — edit form
- Delete / Force Delete / Restore — soft delete support
Bulk actions
| Action | Effect |
|---|---|
| Publish | Sets status = Published and published_at to now (or keeps existing if already set) |
| Unpublish | Sets status = Draft and clears published_at |
| Schedule | Modal with DateTimePicker (min: now); sets status = Published + that timestamp |
| Delete / Force Delete / Restore | Standard soft-delete bulk operations |
All bulk actions notify on completion and deselect rows.
Categories Resource
Simple CRUD for blog categories: name, slug (auto-generated, unique), posts_count column, soft-delete support, trashed filter.
Tags Resource (opt-in)
Appears in the Blog navigation group when features.tags is enabled. Mirrors the Categories resource shape: name, slug (auto-generated, unique, frozen on rename), posts_count column, soft-delete support, trashed filter.
When the flag is off, the resource class still exists but shouldRegisterNavigation() returns false so it doesn't appear in the sidebar.
See the Tags Taxonomy page for full schema and usage.
Plugin Registration
use ManukMinasyan\FilamentBlog\FilamentBlogPlugin;
$panel->plugins([
FilamentBlogPlugin::make(),
]);
The plugin auto-discovers PostResource, CategoryResource, and TagResource under the "Blog" navigation group. Resources hidden by feature flags don't appear in the sidebar — they're still resolvable for tests and direct URL access.