Looking to hire Laravel developers? Try LaraJobs

filament-activity-log maintained by pxlrbt

Description
Spatie's Laravel Activity Log integrated into Filament
Author
Last update
2026/01/20 11:24 (dev-main)
License
Links
Downloads
526 468

Comments
comments powered by Disqus

header

Filament Activity Log

Latest Version on Packagist Software License GitHub Workflow Status Total Downloads

This package adds pages to the Filament Admin panel to view the activity log generated by spatie/laravel-activitylog.

Screenshot

Installation

Plugin Version Filament Version Activitylog PHP Version
0.1.x 2.x 4.x > 8.0
1.x 3.x 4.x > 8.1
2.x 4.x, 5.x 4.x > 8.1
3.x 5.x 5.x > 8.4

Install via Composer.

Requires PHP 8.1, Filament 4.0 or 5.0, and spatie/laravel-activitylog 4.7 or 5.0

composer require pxlrbt/filament-activity-log

Warning This plugin offers two pages: one listing activities on a subject (use ListActivitiesBySubject) and one listing activities caused by a record such as a user (use ListActivitiesByCauser). You need spatie/laravel-activitylog installed and configured for it to work. The subject page uses the LogsActivity trait's activitiesAsSubject() relation; the causer page uses the CausesActivity trait's activitiesAsCauser() relation.

Filament v4 Upgrade

Make sure you have a custom theme, add this line and recompile: @import '../../../../vendor/pxlrbt/filament-activity-log/resources/css/styles.css';

Usage

Make sure you use a custom theme and the vendor folder for this plugins is published, so that it includes the Tailwind CSS classes.

Listing activities for a subject

Screenshot

Use ListActivitiesBySubject to show all activities recorded on a record (e.g. every change to an order).

Setup spatie/laravel-activitylog

Make sure your resource model uses the LogsActivity trait.

<?php

use Spatie\Activitylog\Models\Concerns\LogsActivity;

class Order extends Model
{
    use LogsActivity;
}

Create a ListActivitiesBySubject page

Create the page inside your resource's Pages/ directory. Replace OrderResource with your resource.

<?php

namespace App\Filament\Resources\Orders\Pages;

use pxlrbt\FilamentActivityLog\Pages\ListActivitiesBySubject;

class ListOrderActivities extends ListActivitiesBySubject
{
    protected static string $resource = OrderResource::class;
}

Note The legacy class ListActivities is kept as an abstract alias of ListActivitiesBySubject, so existing subclasses continue to work.

Register the page

Add the page to your resource's getPages() method.

public static function getPages(): array
{
    return [
        'index' => Pages\ListOrders::route('/'),
        'create' => Pages\CreateOrder::route('/create'),
        'activities' => Pages\ListOrderActivities::route('/{record}/activities'),
        'edit' => Pages\EditOrder::route('/{record}/edit'),
    ];
}

Listing activities caused by a record

Use ListActivitiesByCauser to show all activities a record (typically a user) has caused across every subject. Each row links to the affected subject's resource when one is registered.

Setup spatie/laravel-activitylog

Make sure your user model uses the CausesActivity trait.

<?php

use Spatie\Activitylog\Models\Concerns\CausesActivity;

class User extends Authenticatable implements FilamentUser
{
    use CausesActivity;
}

Create a ListActivitiesByCauser page

Create the page inside your UserResource's Pages/ directory.

<?php

namespace App\Filament\Resources\Users\Pages;

use pxlrbt\FilamentActivityLog\Pages\ListActivitiesByCauser;

class ListUserActivities extends ListActivitiesByCauser
{
    protected static string $resource = UserResource::class;
}

See https://spatie.be/docs/laravel-activitylog/v5/advanced-usage/logging-model-events for more information on the topic.

Register the page

Add the page to your resource's getPages() method.

public static function getPages(): array
{
    return [
        'index' => Pages\ListUsers::route('/'),
        'create' => Pages\CreateUser::route('/create'),
        'activities' => Pages\ListUserActivities::route('/{record}/activities'),
        'edit' => Pages\EditUser::route('/{record}/edit'),
    ];
}

Contributing

If you want to contribute to this packages, you may want to test it in a real Filament project:

  • Fork this repository to your GitHub account.
  • Create a Filament app locally.
  • Clone your fork in your Filament app's root directory.
  • In the /filament-activity-log directory, create a branch for your fix, e.g. fix/error-message.

Install the packages in your app's composer.json:

"require": {
    "pxlrbt/filament-activity-log": "dev-fix/error-message as main-dev",
},
"repositories": [
    {
        "type": "path",
        "url": "filament-activity-log"
    }
]

Now, run composer update.