chenalon / laravel-backlog-activity-log
Backpack的活动日志
Requires
- backpack/crud: ^6.0
- spatie/laravel-activitylog: ^4.7
Requires (Dev)
- orchestra/testbench: ~5|~6
- phpunit/phpunit: ~9.0
This package is auto-updated.
Last update: 2024-09-17 21:13:41 UTC
README
是否曾经想要看到谁在何时修改了应用内的什么内容?想要记住用户所做的所有数据库更改?嗯,这个包不能做到这一点。但是spatie/laravel-activitylog
可以,并且做得很好。这个包为使用Backpack for Laravel的项目添加了一个网页界面,使管理员/超级管理员能够看到
- 某些模型执行的活动;
- 在特定模型上执行的活动;
- 等等;
这一切是如何工作的呢?嗯
- 当一个Eloquent模型发生变化时,Spatie包会在数据库中记录它;
- 这个包添加了一个网页界面,这样管理员就可以看到更改(即活动日志);
预览
演示
现在就可以在我们的在线演示中试试。编辑一些实体,并检查活动日志。
安装
在您的Laravel + Backpack项目中,安装此包
# install this interface package: composer require chenalon/laravel-backlog-activity-log # add a menu item for it php artisan backpack:add-menu-content "<x-backpack::menu-item title=\"Activity Logs\" icon=\"la la-stream\" :link=\"backpack_url('activity-log')\" />"
但是,如果您尚未安装并设置spatie/laravel-activitylog
,请遵循他们的文档中的安装步骤。我们也将复制粘贴它们,以便您方便使用
php artisan vendor:publish --provider="Spatie\Activitylog\ActivitylogServiceProvider" --tag="activitylog-config" php artisan vendor:publish --provider="Spatie\Activitylog\ActivitylogServiceProvider" --tag="activitylog-migrations" php artisan migrate
使用方法
注意:如果您的模型尚未配置为创建活动日志,请阅读有关如何记录所有模型事件的常见问题解答。如果您不确定,那么您尚未配置它们来记录活动 - 请阅读。
活动日志列表视图
使用它来浏览所有活动,筛选视图,搜索视图等。
活动日志显示视图
使用它来查看特定活动的详细信息。
CrudController操作
如果您想让您的CrudControllers显示到它们活动的链接,只需使用一个或两个提供的Backpack操作即可。
- ModelActivityOperation:显示一个通用按钮,允许用户查看该模型的所有活动列表。
- EntryActivityOperation:为列表中的每个条目添加行按钮,使用户能够查看针对单个条目的特定活动日志。
ModelActivityOperation - 在CrudController中显示到该模型活动日志的链接
假设您有一个UserCrudController
。如果您想在添加用户按钮旁边显示一个新的按钮,该按钮将带您进入所有用户的全部活动,则请在您的UserCrudController
上使用\Backpack\ActivityLog\Http\Controllers\Operations\ModelActivityOperation
。
<?php
namespace App\Http\Controllers\Admin;
...
class ArticleCrudController extends CrudController
{
...
+ use \Backpack\ActivityLog\Http\Controllers\Operations\ModelActivityOperation;
...
EntryActivityOperation - 在CrudController中显示到每个条目活动日志的链接
假设您有一个UserCrudController
。如果您想在每个条目旁边显示一个新的按钮,该按钮将带您进入该条目的全部活动,则请在您的UserCrudController
上使用\Backpack\ActivityLog\Http\Controllers\Operations\EntryActivityOperation
。
<?php
namespace App\Http\Controllers\Admin;
...
class ArticleCrudController extends CrudController
{
...
+ use \Backpack\ActivityLog\Http\Controllers\Operations\EntryActivityOperation;
...
常见问题解答
默认情况下记录了什么?
默认情况下,没有任何内容被记录。请根据您的需求配置spatie/laravel-activitylog
进行记录。请参阅以下问题,了解最常见的用例。
如何记录模型事件(created
,updated
,deleted
等)
注意:这不是本包提供的功能。这是由
spatie/laravel-activitylog
提供的。但我们尽量文档化最常见的用法,以便您更容易实现。
您希望每当模型被 created
、updated
、deleted
等操作时注册一个新的 Activity 吗?以便记录谁做了什么以及何时发生?以下是设置 spatie/laravel-activitylog
以记录所有模型事件的步骤。
步骤 1. 在 App\Models\Traits\LogsActivity.php
创建一个新的模型特质,内容如下
<?php namespace App\Models\Traits; use Spatie\Activitylog\LogOptions; use Spatie\Activitylog\Traits\LogsActivity as OriginalLogsActivity; trait LogsActivity { use OriginalLogsActivity; /** * Spatie Log Options * By default will log only the changes between fillables * * @return LogOptions */ public function getActivitylogOptions(): LogOptions { return LogOptions::defaults()->logAll()->logOnlyDirty(); } }
步骤 2. 在您希望记录所有事件的所有模型上使用该特质
<?php namespace App\Models; +use App\Models\Traits\LogsActivity; use Backpack\CRUD\app\Models\Traits\CrudTrait; class Article extends Model { use CrudTrait; + use LogsActivity; ...
请注意,此特质扩展了默认的 Spatie\Activitylog\Traits\LogsActivity
并定义了 getActivitylogOptions()
方法,提供了一些合理的默认值。如果您想自定义,请参阅这里的详细信息以及这里的选项。
您如何自定义要记录的内容?
要自定义要记录的信息,您可以在模型中重写 getActivitylogOptions
方法。
public function getActivitylogOptions(): LogOptions { return LogOptions::defaults() ->logFillable() ->logOnlyDirty(); }
我可以进一步自定义日志吗?
是的,您可以!Spatie laravel-activitylog 包提供了一系列高级自定义选项。有关这些选项的详细信息,请查看 Spatie 的官方日志选项文档,网址为https://spatie.be/docs/laravel-activitylog/v4/api/log-options
我正在使用 backpack/permission-manager
,因此我没有访问 UserCrudController
如果您还没有自定义您的 UserCrudController
,您可以通过将 Backpack 控制器绑定到您的自定义控制器来实现这一点。在您的 App\Providers\AppServiceProvider.php
class AppServiceProvider extends ServiceProvider { public function register() { $this->app->bind( \Backpack\PermissionManager\app\Http\Controllers\UserCrudController::class, \App\Http\Controllers\Admin\UserCrudController::class );
然后在您的 App\Http\Controllers\Admin\UserCrudController.php
中,您可以这样做
use Backpack\PermissionManager\app\Http\Controllers\UserCrudController as OriginalUserCrudController; class UserCrudController extends OriginalUserCrudController { use \Backpack\ActivityLog\Http\Controllers\Operations\ModelActivityOperation; use \Backpack\ActivityLog\Http\Controllers\Operations\EntryActivityOperation; }
安全
如果您发现任何安全相关的问题,请通过电子邮件cristian.tabacitu@backpackforlaravel.com 联系,而不是使用问题跟踪器。
鸣谢
许可证
该项目在 MIT 许可证下发布,因此您可以在任何 Backpack & Laravel 项目上安装它。有关更多信息,请参阅许可证文件。